David,
Are you being affected by javac's long-standing policy of implicit
compilation?
If ListShim.java references other classes, and those classes either only
exist on the module source path, or are newer on the module source path,
then they will be compiled into the output directory as well.
You can disable this behavior with javac's -implicit option:
-implicit:{none,class} Specify whether or not to generate class
files for implicitly referenced files
-- Jon
On 08/23/2016 01:57 PM, David Hill wrote:
I am trying to understand module compilation using a trivial set of
classes. These comprise a "module" of two classes, a test class, and a
"shim" test class. (The shim is an adapter used for 'white box' style
tests).
On top of this, I am trying this with Gradle 3.
So far, I have made some interesting progress. For the "simple" case,
Gradle 3 seems to be handling the required tasks nicely. A 'simple'
module and set of public api test classes works without much effort.
Certainly Gradle has a few more fixes to go, for example its
insistence on stuffing
-sourcepath /some/empty/directory
in some compilations, which collides with my addition of
--module-source-path
Mostly however, I have just be able to tack on additional JDK 9
arguments.
I am currently trying to understand how I can best compile my shim
classes. In my current build, I perform a non-modular build of the
module classes, and then the shim classes, and then combine the sum of
them together and call it a module :-) This is a stopgap until we can
rework to create a proper modular build.
The item that currently puzzles me is an invocation of javac (b132)
with a list of a single file to be compiled that ends up compiling
everything within the module-source-path. I would have expected that
only the listed files would be compiled. Below is the extracted
compile line (with -sourcepath removed).
Any thoughts or suggestions are welcome.
Anyone else interested in my Gradle module quickstart demo let me know
off list and I will point you to a copy when I get past this hump.
/Users/ddhill/shared/jdk9/osx-x64/jdk-9.jdk/Contents/Home//bin/javac
-verbose \
-d \
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/shims
\
-g \
-release \
9 \
--module-path
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/main/dave
\
--add-modules dave \
--module-source-path
'/Users/ddhill/shared/gradle/module-quickstart/modules/*/src/{main,test}/{java,module-info}'
\
-classpath \
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/test:/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/resources/test:/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/main:/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/resources/main:/Users/ddhill/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar:/Users/ddhill/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar
\
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/src/test/java/org/dave/ListShim.java
\
-XDuseUnsharedTable=true
and yet the result is more classes than the ListShim that was listed:
[ddhill module-quickstart]$ find
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/shims
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/shims
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/shims/dave
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/shims/dave/module-info.class
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/shims/dave/org
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/shims/dave/org/dave
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/shims/dave/org/dave/List.class
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/shims/dave/org/dave/ListShim.class
/Users/ddhill/shared/gradle/module-quickstart/modules/dave/build/classes/shims/dave/org/dave/Person.class