Sure, no problemOp Tue, 05 Jan 2016 22:20:16 +0100 schreef Paul Benedict <[email protected]>:
No problem, Robert. I just wanted to collaborate (since both you and I areon Maven and OpenJDK lists) and offer alternative options. Personally, my interest is generating module-info.java from dependencies; so if you ever get to that problem space, please reach out to me so I can discuss some ideas with you. Cheers, PaulOn Tue, Jan 5, 2016 at 3:14 PM, Robert Scholte <[email protected]> wrote:You could specify the "requires" by reading the module-info when availablein a jar or by converting the file name when not available. However, "requires" could also be "requires public"[1]. That's all up to the developer. All other sections must be handcrafted. For that reason I mentioned that you can verify if they are in sync.So you can't just write the complete java-file, unless you are thinking of something like the templating-maven-plugin[2] to do some half manual/halfgenerated stuff. Anyhow, for me it is out of scope. I'm just writing poms as usual and write the module-info.java with my favorite texteditor and those are the first things that should work. thanks, Robert [1] http://cr.openjdk.java.net/~mr/jigsaw/spec/lang-vm.html [2] http://www.mojohaus.org/templating-maven-plugin/ Op Tue, 05 Jan 2016 21:58:42 +0100 schreef Paul Benedict < [email protected]>: However, you could theoretically generate module-info.java based ondependencies, if you knew which dependencies were modules. Given that the"what is a module" metadata is not being captured today, you would berequired to inspect the contents of the jars in your dependency graph andthen add that to the model at runtime. Cheers, Paul On Tue, Jan 5, 2016 at 2:53 PM, Robert Scholte <[email protected]> wrote:Let me first make clear that I chose Maven as a reference application. Iwanted a real life multimodule example, not as big as SCM and with enoughclasses. I wanted to test if I could package/compile this project if Iadded module-info.java files to it and confirm that all the other pluginswould still do their work. This is where users are asking for now that the jdk9-ea versions are available: IDE's and buildtools to support these new features. Yes, there is some overlap between a dependencies and module-info, butthey have different purposes. In short: you cannot generate module-infobased on dependencies, nor generate the dependencies-section based on module-info (although you can check if they are in sync). By the time I'll write a blogentry about it, because it is good to know the subtle differences between the two. thanks, Robert Op Mon, 04 Jan 2016 23:43:12 +0100 schreef Tibor Digana < [email protected]>: I was watching the videos but this migration leads to POM duplicates.That's what I am trying to tell you. I guess you are too in hurry with that. I don't see any reason why the Maven should even use modulepath and module-info.You should maybe write a simple page where and how the modulepath can be used in build lifecycle and why it is so important. The best would be todescrribe it in picture in very trivial way. The JDK9 is far away and anything may still change. I understand that Maven should be compliant if really necessary but I am sure that you Robert diginto this problem more than anyone else and everything is clear to youbut any detail you may miss may be important.On Mon, Jan 4, 2016 at 11:31 PM, Robert Scholte <[email protected]>wrote: javac is backwards compatible, it is extended with module support.Based on your questions I suggest to watch the videos of the sessionsof JavaOne[1] This gave me a good picture of what jigsaw is and what it is not. Robert [1] http://openjdk.java.net/projects/jigsaw/j1/ Op Mon, 04 Jan 2016 23:25:54 +0100 schreef Tibor Digana < [email protected]>: wait a moment. javac must be backwards compatible, so why this won't work in Java9javac -d ... -classpath .:child1:child2 Isn't module info a duplicate to POM? Why we must "copy" some libs to target/libs/, which would slow down thebuild, and add dependency arifacts to modulepath if they could be inclasspath as they are now? Is this true? modulepath = List(dependency artifacts)? What benefit javac has if you just split the classpath? Again, this seems to be a duplicate of dependency descriptions.What resolution would be? To merge, to prioritize and order artifactfiles?On Mon, Jan 4, 2016 at 9:03 PM, Robert Scholte <[email protected]>wrote: Op Sun, 03 Jan 2016 22:55:48 +0100 schreef Tibor Digana < [email protected]>:Do you want to use modulepath for dependencies -modulepath ../child2/target/classes, ../child3/target/classesinstead of aggregating -classpath in javac?it is not about willing or not willing, it is a must when compiling(java) modules.On Sun, Jan 3, 2016 at 5:55 PM, Robert Scholte <[email protected]> wrote:Hi, I've been able to locally *package* a subset of the MavenModulesenriched with module-info.mvn package -pl :maven-settings-builder -am -Denforcer.skipresulting in: [INFO] Reactor Summary: [INFO][INFO] Apache Maven ...................................... SUCCESS[57.217s][INFO] Maven Builder Support ............................. SUCCESS[1:12.072s][INFO] Maven Settings .................................... SUCCESS[10.900s][INFO] Maven Settings Builder ............................ SUCCESS[29.223s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ Skipping enforcer is required because the bytecode signature for java9 isn't recognized yet.The reason I use 'package' is because it'll use the created jars ofevery maven module. These jars I can copy to a specific folder ( e.g. target/libs ), so I can use as compiler argument '-modulepath target/libs'. And this works, including executing surefire without patching! I haven't used the -modulesourcepath, because that would include the module-name in the outputdirectory, resulting in something like target/classes/maven.setting.builder/org/apache/maven/setting/building/SettingsBuilder.class Every plugin using classpath would fail.However, to be able to run 'mvn compile', according to the specs[1]in case of exploded directory, such directory must start with the module name, hence I should start using -modulesourcepath I was hoping that we only had to patch the plugins, but it seems like we need to change MavenProject as well to separate classpath from modulepath since you need them both.IMHO if we try to abuse classpath for modulepaths we'll have to doa lotof tricks and magic to always get the right values, which is doomedfor failure. Maybe now that we can specify the builder via commandline there could be an easy way to extend MavenProject, I'm just not if that's something worth trying. I'm also wondering how IDEs think this should be solved.So the question is: can this only be solved with a new version ofMaven or does somebody has a proposal to fix this on a plugin-level? thanks, Robert [1] http://openjdk.java.net/jeps/261 --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] ---------------------------------------------------------------------To unsubscribe, e-mail: [email protected]For additional commands, e-mail: [email protected] ---------------------------------------------------------------------To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]---------------------------------------------------------------------To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
