2016-11-22 10 views
2

Ceylon 1.3.1 только что был выпущен, один из новых элементов - лучшая интеграция с Java-проектами/библиотеками. Решил взять один из образцов для вращения (https://github.com/DiegoCoronel/ceylon-spring-boot) рядом с плагином ceylon-gradle (https://github.com/renatoathaydes/ceylon-gradle-plugin).Ошибка компиляции примера Ceylon с Gradle

Насколько я могу судить, превращение этого проекта в многопроектную сборку 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 
} 

Однако ошибка не будет устранена. Любые указатели на то, что я могу пропустить, будут весьма признательны.

+0

Привет! Извините, я еще не успел обновить плагин Ceylon для использования Ceylon 1.3.1! Скоро получится это! – Renato

ответ

3

Это потому, что Цейлон Gradle плагин does not support yet новая функция --fully-экспорт-Maven-зависимость ... Я создал этот вопрос сейчас;), поэтому, чтобы сделать вашу работу над проектом вам, возможно, потребуется изменить каждый подпроект/.ceylon/конфигурация с этими параметрами:

[compiler] 
source=source 
resource=resource 

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

Это будет отключить новую функцию Цейлона и использует Цейлон Gradle функции плагина и сгенерированный файл overrides.xml

+0

Согласовано. Мне кажется, что это проблема с плагином Gradle в том, что по умолчанию это слишком много. И в этом случае - по вполне законным историческим причинам - он пытается сделать то, что уже делает Ceylon 1.3.1. –

+1

Спасибо! Предлагаемое исправление делает сборку дальнейшим. Модули 'discovery' и' gateway' строят без проблем, однако 'foo',' bar' и 'foobar' терпят неудачу при импорте дубликатов модулей. Я думаю, что это вызвано автоматической генерацией 'overrides.xml' вместо использования предоставленного, см. источник/bar/module.ceylon: 2: ошибка: исходный код импортирует две разные версии модуля 'org.springframework.data : spring-data-commons ': version' 1.12.4.RELEASE 'и version' 1.12.5.RELEASE ' панель модулей "1.0.0" { – aalmiray

+1

Правильно, но проблема с [исправление] (https : //github.com/renatoathaydes/ceylon-gradle-plugin/issues/16), вероятно, он будет исправлен в следующем выпуске, и все будет прозрачным, если вы выберете метод gradle или ceylon для работы с зависимостями –