Previously, `gradle eclipse` would generate .classpath files with
GRADLE_CACHE references. Now it generates fully-qualified paths to
the user's home directory by default. This means we can remove the
eclipseClasspath.variables = [:]
workaround.
Redirect all stdout for the test task to LogLevel.INFO, effectively
suppressing it from the default LogLevel of LIFECYCLE.
Gradle actually does this redirection during testing anyway, but for
non-main threads that exit after the test task has completed, their
output makes its way to the console. This is why, prior to this commit
verbose 'intentional test failure' stack traces could be seen polluting
the console.
Also tuned the Xlint flags to javac on a project-by-project basis. Only
those projects that have spurious path warnings get '-path'; only those
projects with spurious deprecation warnings get '-deprecation', and so
on. This way, there's no blanket policy applied too liberally to all
projects; if path or deprecation errors crop up in a different module,
folks should see them rather than having them automatically suppressed.
For ease of use by those (a) more familiar with Maven or (b) relying
on m2eclipse support within Eclipse/STS, generated poms are now checked
in. Changes to these files will be overwritted on subsequent gradle
builds.
Any changes to project dependencies should first be reflected in
build.gradle; then run `gradle generatePom` or simply `gradle build`
to see the change reflected in the pom(s).
Note that org.springframework.integration.ip.tcp.TcpInboundGatewayTests
currently fails when running `mvn clean test` from the root. This
problem does not manifest when running `gradle clean test`. The latter
is what's most important; Gary has been contacted to take a look at the
former.
Issues resolved:
INT-1609, INT-1610, INT-1611
.gradle scripts once in gradle/ dir now live in shared buildSrc/ dir.
Some hard-coding of Spring Integration specifics still remain and will
be removed shortly.
Generate poms from Gradle metadata with
`gradle generatePom`
This will create a root pom with a <modules> section as well as a pom
for every individual module.
These poms are suitable for use with m2eclipse (e.g., File->Import->
Existing Maven project), or at the command line for basic build goals
such as `mvn test`.
These poms are not capable of producing distribution artifacts or
deployment of artifacts.
pom.xml and target will remain in .gitignore as these artifacts are
transient and for developer convenience only.
Changes requiring schema generation are exceedingly rare; favor
manual execution of `gradle generateSql` for the time being.
Generated sources are checked into the tree at
src/main/resources/org/springframework/integration; simply regenerate
and copy to this location manually as necessary.
This was due to Gradle's silent failure to match exclusions detailed
at http://jira.codehaus.org/browse/GRADLE-1028. Everything is working
as expected now after this update, however.
Requires significant pom customization in maven-deployment.gradle
which has been verified at `gradle install` time, but not yet at
`gradle uploadArchives` time. Need to figure out how to eliminate
the duplication going on there.
Complete:
--------
- src/* documentation resources moved to 'docs' subproject
- docbook sources upgraded to Docbook 5
- formatted all docbook sources to strip tab characters and
eliminate trailing whitespace
- all projects compile and test successfully
- all artifacts upload successfully to s3, static.sf.org, etc.
Remaining:
---------
- documentation L&F needs work. CSS, images, and highlighting aren't
hooked up properly
- spring-integration-jdbc codegen bits in Maven POM need to be
transcribed into gradle
- dependencies that were optional or provided scope in maven are
currently 'compile' scope in Gradle. Need to figure out support
in Gradle to fix this.
- run through Eclipse classpath and project generation scenarios
- delete all Maven artifacts