[GRADLE-1605] "copy" task reporting up-to-date Created: 10/Jun/11 Updated: 05/Sep/16 Resolved: 14/Jun/11 |
|
Status: | Resolved |
Project: | Gradle |
Affects Version/s: | 1.0-milestone-3 |
Fix Version/s: | None |
Type: | Bug | ||
Reporter: | Brian Trezise | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Description |
Here is the thread where the issue is discussed: But a brief summary follows. Here is the affected part of my build script: project(':api:pricing') { version = 1.0 dependencies { compile project(':api:util') compile 'org.springframework:spring:2.5.6.SEC01' compile 'org.drools:drools-core:5.0.1' compile 'org.drools:drools-api:5.0.1' compile 'org.drools:drools-compiler:5.0.1' } task copyDatasource(type: Copy) {//copy our <datasource>.xml into dpu-datasource.xml from('/datasource/') into('src/main/resources/') include(datasource + '.xml') rename(datasource + '.xml', 'pricing-datasource.xml') outputs.upToDateWhen { false } //This has no effect - With or without this, it doesn't work } jar.dependsOn task(':api:pricing:copyDataSource') } Basically what is happening is that if I call "gradle :api:pricing:copyDatasource" the task executes as expected; However if I call "gradle :api:pricing:jar" the copyDatasource task reports UP-TO-DATE no matter what - even if I manually delete the target file before running the build. If I run "gradle :api:pricing:jar -i" then I get the following message when it tries to run copyDatasource -
:api:pricing:copyDataSource
Skipping task ':api:pricing:copyDataSource' as it has no actions.
:api:pricing:copyDataSource UP-TO-DATE
Assistance would be appreciated. Currently the only workaround we've got is to call the copyDatasource task directly before attempting to jar the project, which shouldn't be necessary - defeats the whole point of making jar depend on copyDatasource, and automated builds in general. ~Brian |
Comments |
Comment by Szczepan Faber [ 14/Jun/11 ] |
Created a separate entry for it: The way you refer to the task while setting the 'dependsOn' is incorrect: //correct: you're actually creating an empty task here: jar.dependsOn task(':foo:bar') //correct: you refer to an existing task jar.dependsOn ':foo:bar' However, your example demonstrate a bug. Gradle should throw an exception saying that you cannot add ':api:pricing:copyDataSource' task because it already exists. See docs on the task method: http://gradle.org/current/docs/dsl/org.gradle.api.Project.html#org.gradle.api.Project:task(java.lang.String) |
Comment by Brian Trezise [ 14/Jun/11 ] |
I updated my code as you suggested, but I get the following exception with the code configured that way: FAILURE: Build failed with an exception.
BUILD FAILED project(':api:pricing') { dependencies { compile project(':api:util') compile 'org.springframework:spring:2.5.6.SEC01' compile 'org.drools:drools-core:5.0.1' compile 'org.drools:drools-api:5.0.1' compile 'org.drools:drools-compiler:5.0.1' }task copyDatasource(type: Copy) {//copy our <datasource>.xml into dpu-datasource.xml from('/datasource/') into('src/main/resources/') include(datasource + '.xml') rename(datasource + '.xml', 'pricing-datasource.xml') } jar.dependsOn ':api:pricing:copyDataSource' |
Comment by Brian Trezise [ 14/Jun/11 ] |
D'oh! Just noticed I've got some case confusion going on here! should be jar.dependsOn 'api:pricing:copyDatasource' not copyDataSource. Whoops! Thanks for the pointer on not putting it in the task('path') syntax though. |