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




Reply via email to