【问题标题】:Error compiling Ceylon example with Gradle使用 Gradle 编译 Ceylon 示例时出错
【发布时间】:2016-11-22 19:57:25
【问题描述】:

Ceylon 1.3.1 刚刚发布,其中一项新功能是与 Java 项目/库更好地集成。决定将其中一个样本与 ceylon-gradle 插件 (https://github.com/renatoathaydes/ceylon-gradle-plugin) 一起进行旋转 (https://github.com/DiegoCoronel/ceylon-spring-boot)。

据我所知,将这个项目变成一个多项目 Gradle 构建只是添加两个具有以下配置的文件。

settings.gradle

include 'gateway'
include 'discovery'
include 'foo'
include 'bar'
include 'foobar'

build.gradle

plugins {
    id 'com.athaydes.ceylon' version '1.3.0' apply false
}

subprojects { subprj ->
    subprj.apply plugin: 'com.athaydes.ceylon'

    repositories {
        mavenCentral()
    }

    ceylon {
        module = subprj.name
    }
}

不幸的是,构建任何模块都会导致错误,例如

$ gradle :gateway:compileCeylon

:gateway:resolveCeylonDependencies
:gateway:createDependenciesPoms
:gateway:createMavenRepo
:gateway:generateOverridesFile
:gateway:createModuleDescriptors
:gateway:importJars
:gateway:compileCeylon
source/gateway/module.ceylon:3: error: Pre-resolving of module failed: Could not find module: antlr/2.7.7
        import ceylon.interop.java "1.3.0";
        ^
ceylon compile: There was 1 error
:gateway:compileCeylon FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':gateway:compileCeylon'.
> Ceylon process exited with code 1. See output for details.

使用 Gradle 3.2 会发生这种情况

------------------------------------------------------------
Gradle 3.2
------------------------------------------------------------

Build time:   2016-11-14 12:32:59 UTC
Revision:     5d11ba7bc3d79aa2fbe7c30a022766f4532bbe0f

Groovy:       2.4.7
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_112 (Oracle Corporation 25.112-b16)
OS:           Mac OS X 10.10.5 x86_64

尝试按照插件文档中的说明在 ceylon 配置上设置其他属性,例如

ceylon {
    flatClasspath = false
    importJars = true
    forceImports = true
}

但是错误仍然存​​在。任何关于我可能遗漏的指针将不胜感激。

【问题讨论】:

  • 嗨!抱歉,我还没有时间更新 Ceylon 插件以使用 Ceylon 1.3.1!很快就会解决这个问题!

标签: gradle plugins ceylon


【解决方案1】:

这是因为 ceylon gradle 插件 does not support yet 新功能 --fully-export-maven-dependencies ...我现在创建了问题 ;),所以为了使您的项目正常工作,您可能需要更改 每个 subproject/.ceylon/config 带有这些选项:

[compiler]
source=source
resource=resource

[defaults]
encoding=UTF-8
overrides=build/overrides.xml
flatclasspath=true
fullyexportmavendependencies=false

它将禁用新的 ceylon 功能并使用 ceylon gradle 插件功能和生成的 overrides.xml 文件

【讨论】:

  • 同意。在我看来,这是 Gradle 插件的一个问题,默认情况下,它做的太多了。在这种情况下——出于完全合理的历史原因——它试图做 Ceylon 1.3.1 已经做过的事情。
  • 谢谢!建议的修复使构建更进一步。模块 discoverygateway 构建没有问题,但是 foobarfoobar 因重复模块导入而失败。我认为这是由于自动生成overrides.xml 而不是使用提供的,请参阅source/bar/module.ceylon:2: 错误:源代码导入两个不同版本的模块'org.springframework.data:spring-data -commons':版本 '1.12.4.RELEASE' 和版本 '1.12.5.RELEASE' 模块栏 "1.0.0" {
  • 对,但是fix in progress 有问题,可能会在下一个版本中修复,如果你选择 gradle 或 ceylon 方式来处理依赖关系,一切都会透明
猜你喜欢
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多