While evaluating Gradle I've run into a dead end with the usage of the war
plugin. The "usePlugin('war')" directive is in the file
./csl/wars/build.gradle but the war file source is actually in
./csl/wars/mywarproject and dependencies are defined in
./csl/wars/mywarproject/build.gradle

Two things stump me with the war file:

1) Files not within the war file ./WEB-INF directory are not included in the
war file. Typically our wars contain other content in the archive root
folder (i.e. jsps, images, etc.). The problem is the war file gernerated out
of gradle just contains the WEB-INF content. I was trying to figure out how
to append filesets to the war object within the build.gradle script but
couldn't manage.

The snippet:

subprojects {
  usePlugin('war')
  dists {
    war() {
      fileSet(dir: 'src/public_html') {
        excludes('WEB-INF')
        includes('**/*')
      }
    }
  }
}

results in the error message:

Exception: org.gradle.api.GradleScriptException:
org.gradle.api.InvalidUserDataException: A task with this name already
exists!

The documentation mentions examples such as
"myZipTask.files('path_to_file1', 'path_to_file2')" but fails to mention how
to get a reference to myZipTask.

How do I access the 'war' task at runtime so that I can manipulate the
archive content?

2) The war build.gradle file contains the dependency "compile
project(':csl:jars:myjarproject')" which is automatically added to the war
lib directory. While this is sometimes desired we don't want to blow up our
distribution so we put the project jars in the shared classpath. How do I
prevent gradle from added "dependency" jars to the war lib folder?


|-csl
| |
| |-jars
| | |
| | |-myjarproject
| | | |
| | | |-src
| | | | |
| | | | |-main
| | | | | |
| | | | | |-java
| | | | | |
| | | | | |-resources
| | | | |
| | | | |-test
| | | |   |
| | | |   |-java
| | | |   |
| | | |   |-resources
| | | |
| | | |-build.gradle
| | |
| | |-build.gradle
| |
| |-wars
| | |
| | |-mywarproject
| | | |
| | | |-src
| | | | |
| | | | |-main
| | | | | |
| | | | | |-java
| | | | | |
| | | | | |-resources
| | | | | |
| | | | | |-webapp
| | | | |
| | | | |-test
| | | |   |
| | | |   |-java
| | | |   |
| | | |   |-resources
| | | |
| | | |-build.gradle
| | |
| | |-build.gradle
| |
| |-build.gradle
|
|-local_maven_repo
|
|-build.gradle
|
|-settings.gradle

*** contents of ./setting.gradle

include 'csl', 'csl:jars', 'csl:wars', 'csl:jars',
  'csl:jars:myjarproject', 'csl:wars:mywarproject'

*** contents of ./build.gradle

childrenDependOnMe()
dependsOnChildren()

private static final boolean javacDeprecationFlag      = false
private static final boolean javacWarningFlag          = false
private static final String  javacSourceCompatibility  = "1.4"
private static final String  javacTargetCompatibility  = "1.4"
private static final String  axnArchivePrefix          = "axn"
private static final String  axnGroup                  = "com.audatex.axn"
private static final String  axnVersion                = "6.2"

allprojects {
  group = axnGroup
  version = axnVersion
  archivesBaseName = axnArchivePrefix + project.archivesBaseName
  setProperty("sourceCompatibility", javacSourceCompatibility)
  setProperty("targetCompatibility", javacTargetCompatibility)
  setProperty("compile.options.deprecation", javacDeprecationFlag)
  setProperty("compile.options.warnings", javacWarningFlag)
  dependencies {
    classpathResolvers.add([ name: 'local_maven_repo', url: new File(
rootDir, 'local_maven_repo' ).toURL().toString()])
    classpathResolvers.add([ name:
DependencyManager.DEFAULT_MAVEN_REPO_NAME, url:
DependencyManager.MAVEN_REPO_URL ])
  }
}

*** contents of ./csl/build.gradle

childrenDependOnMe()
dependsOnChildren()

subprojects {}

*** contents of ./csl/jars/build.gradle

childrenDependOnMe()
dependsOnChildren()

subprojects {
  usePlugin('java')
  sourceCompatibility = project(':').getProperty("sourceCompatibility")
  targetCompatibility = project(':').getProperty("targetCompatibility")
  compile {
    options.deprecation =
project(':').getProperty("compile.options.deprecation")
    options.warnings    =
project(':').getProperty("compile.options.warnings")
  }
}

*** contents of ./csl/wars/build.gradle

childrenDependOnMe()
dependsOnChildren()

subprojects {
  usePlugin('war')
  sourceCompatibility = project(':').getProperty("sourceCompatibility")
  targetCompatibility = project(':').getProperty("targetCompatibility")
  compile {
    options.deprecation =
project(':').getProperty("compile.options.deprecation")
    options.warnings    =
project(':').getProperty("compile.options.warnings")
  }
  dists {
    war() {
      fileSet(dir: 'src/public_html') {
        excludes('WEB-INF')
        includes('**/*')
      }
    }
  }
}

*** contents of ./csl/jars/myjarproject/build.gradle

type = 'jar'

dependencies {
  compile "junit:junit:3.8.2"
}

*** contents of ./csl/wars/mywarproject/build.gradle

type = 'war'

dependencies {
  compile project(':csl:jars:myjarproject')
  compile "javax.servlet:servlet-api:2.4"
}
-- 
View this message in context: 
http://www.nabble.com/War-Plugin-problems-tp18232294p18232294.html
Sent from the gradle-user mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to