[GRADLE-1483] Tasks of type JavaExec fails to honor inputs/outputs Created: 18/Apr/11  Updated: 04/Jan/13  Resolved: 16/Feb/12

Status: Resolved
Project: Gradle
Affects Version/s: 1.0-milestone-2
Fix Version/s: 1.0-milestone-9

Type: Bug
Reporter: Magnus Rundberget Assignee: Luke Daley
Resolution: Fixed Votes: 3


The following task will always run regardless:

/** Generate webservice source files from wsdl **/
wsdlDir = file("src/main/resources/wsdl")
wsdlFile = file("$wsdlDir/SakWS.wsdl")
jaxbBindingsFile = file("$wsdlDir/jaxbBindings.xml")
task wsdl2Java(type: JavaExec) {    
    inputs.files configurations.cxfCodeGenLibs, wsdlFile, jaxbBindingsFile
    outputs.files generatedWsdlDir
    main = 'org.apache.cxf.tools.wsdlto.WSDLToJava'
    classpath = configurations.cxfCodeGenLibs
    args '-b', jaxbBindingsFile,
            '-d', generatedWsdlDir,
compileJava.dependsOn wsdl2Java

Comment by Magnus Rundberget [ 18/Apr/11 ]

This workaround from Adam fixes it;

outputs.upToDateSpec = new org.gradle.api.specs.AndSpec()  
Comment by Peter Niederwieser [ 22/Apr/11 ]

Is there any particular reason why we set upToDateWhen {false} for JavaExec?

Comment by Luke Daley [ 16/Feb/12 ]

The javaexec task can now be made incremental if you declare some outputs.

Out of the box it does not declare any outputs so will not be incremental.

Comment by Warren Muller [ 27/Feb/12 ]

M6 and M8 did not work for me with:
outputs.upToDateSpec = new org.gradle.api.specs.AndSpec()
Trying gradle-1.0-milestone-9-20120227005038+0100 (last nights) did not work either. i.e. rebuilds every time
I am using a slightly more generic version:
Not all code included but this is the gist of it

        // mc, cp, ag defined above as being set by iteration through a map of settings
	tasks.add(name: "wsdl2Java${k.capitalize()}",type: JavaExec) {
		description="Generates Java source for wsdl:${k}=${v.file}"
		outputs.upToDateSpec = new org.gradle.api.specs.AndSpec()
		outputs.files generatedWsdlDir
		inputs.files configurations.compile, wsdlFile
		main = mc
		classpath = cp
		args = ag
		logger.debug "main=${main},classpath=${classpath},args=${args}"
	clean.dependsOn "cleanWsdl2Java${k.capitalize()}"
	project."compile${wsdlSrcSetName.capitalize()}Java".dependsOn "wsdl2Java${k.capitalize()}"
Comment by MikeN [ 27/Feb/12 ]

M6 and M7 work for me with

outputs.upToDateSpec = new org.gradle.api.specs.AndSpec()
Generated at Wed Jun 30 11:56:40 CDT 2021 using Jira 8.4.2#804003-sha1:d21414fc212e3af190e92c2d2ac41299b89402cf.