Hi,

On 23.07.22 18:28, Stanimir Stamenkov wrote:
I want to produce a Java 8 compatible library that provides some Java 9+ classes, packaged as a Multi-Release JAR:

The best suggestion I can give is is to use a multi module setup.


https://github.com/khmarbaise/mrelease

Furthermore I'm not sure if you really need toolchains in your case?.

Kind regards
Karl Heinz Marbaise

 * https://maven.apache.org/plugins/maven-compiler-plugin/multirelease.html

I've taken a slimmed down _Multi-Release Parent_ <http://www.russgold.net/sw/2018/04/easier-than-it-looks/> approach, and the main compilation and packaging seems just right:

     <plugin>
         <artifactId>maven-compiler-plugin</artifactId>
         <version>3.10.1</version>
         <configuration>
             <source>8</source>
             <target>8</target>
         </configuration>
         <executions>
             <execution>
                 <id>compile-java9</id>
                 <phase>compile</phase>
                 <goals>
                     <goal>compile</goal>
                 </goals>
                 <configuration>
                     <release>9</release>
                     <jdkToolchain>
                         <version>9</version>
                     </jdkToolchain>
                     <compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java9</compileSourceRoot>
                     </compileSourceRoots>
                     <multiReleaseOutput>true</multiReleaseOutput>
                 </configuration>
             </execution>
         </executions>
     </plugin>
     <plugin>
         <artifactId>maven-jar-plugin</artifactId>
         <version>3.2.2</version>
         <configuration>
             <archive>
                 <manifestEntries>
                     <Multi-Release>true</Multi-Release>
                 </manifestEntries>
             </archive>
         </configuration>
     </plugin>

Now I've added some test sources exercising the Java 9+ only classes, but the `testCompile` goal seems unable to find them.  Is it possible to configure the `default-testCompile` execution to see the classes from the `multiReleaseOutput` of the main compile?

FWIW, my current work-in-progress could be seen at:

  * https://github.com/stanio/xbrz-java/commit/8c9564ee874

Reply via email to