2015-12-22 4 views
1

Я пытаюсь использовать http://launch4j.sourceforge.net/ через этот плагин Gradle https://github.com/TheBoegl/gradle-launch4j.Задача Gradle не выполняет свою зависимость

Когда я делаю gradle clean launch4j Получаю следующий вывод.

:clean 
:compileJava 
:processResources UP-TO-DATE 
:classes 
:jar 
:copyL4jLib 
:generateXmlConfig 
:createExeWithBin SKIPPED 
:unzipL4jBin 
:copyL4jBinLib 
:createExeWithJar FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':createExeWithJar'. 
> meta-tagger.exe not created: 
     launch4j: Icon doesn't exist. 

Я не понимаю, почему copyResources не запускается. Очевидно: выполняется copyL4jLib. Не следует ли Gradle понять, что copyResources приходит перед ним и выполняет его сначала?

Адрес my the gradle -version info.

Gradle 2.10 
Build time: 2015-12-21 21:15:04 UTC 
Build number: none 
Revision:  276bdcded730f53aa8c11b479986aafa58e124a6 

Groovy:  2.4.4 
Ant:   Apache Ant(TM) version 1.9.3 compiled on December 23 2013 
JVM:   1.8.0_66 (Oracle Corporation 25.66-b18) 
OS:   Windows 7 6.1 amd64 

И вот мой сценарий построения.

plugins { 
    id 'edu.sc.seis.launch4j' version '1.6.1' 
    id 'java' 
} 

repositories { 
    mavenLocal() 
    mavenCentral() 
    jcenter() 
} 

sourceCompatibility = JavaVersion.VERSION_1_8 
targetCompatibility = JavaVersion.VERSION_1_8 

task copyResources(type: Copy) { 
    from 'src/main/wrapper-resources/' 
    into 'build/launch4j' 
} 

copyL4jLib { 
    dependsOn copyResources 
} 

launch4j { 
    mainClassName = 'com.mpinnegar.Main' 
    icon = 'favicon.ico' 
    headerType = 'console' 
    errTitle = 'Image Tagger' 
    stayAlive = true 
} 

tasks.copyL4jLib.dependsOn copyResources 

ответ

3

Кажется, что плагин делает что-то внятное. Сначала он создает задачу (см https://github.com/TheBoegl/gradle-launch4j/blob/develop/src/main/groovy/edu/sc/seis/launch4j/Launch4jPlugin.groovy#L50), а затем заменяет задачу в afterEvaluate блоке (см https://github.com/TheBoegl/gradle-launch4j/blob/develop/src/main/groovy/edu/sc/seis/launch4j/Launch4jPlugin.groovy#L122)

Чтобы обойти эту проблему, вы должны быть в состоянии поставить установку зависимостей вашей задачи в afterEvaluate блоке, чтобы обеспечить вы настраиваете Задача replaced:

afterEvaluate { 
    copyL4jLib.dependsOn copyResources  
}