Java 根据不同的JDK版本编译相同的JAR

Java 根据不同的JDK版本编译相同的JAR,java,maven,java-11,maven-profiles,Java,Maven,Java 11,Maven Profiles,我们有一个遗留Java库(称为AcmeLib),用于引导Java应用程序、提供配置、包装某些db功能等。这个库在维护模式下非常复杂,是使用maven构建的标准Java8JAR 我们现在想要构建Java11应用程序——它们需要使用AcmeLib。我的第一个想法是继续在Java8中构建AcmeLib——当导入Java11应用程序时,它会很好地工作(*其中关键是更新AcmeLib依赖项) 我有另一个想法来构建AcmeLib的Java8和Java11版本。我可以用maven配置文件来实现这一点(因为它们

我们有一个遗留Java库(称为AcmeLib),用于引导Java应用程序、提供配置、包装某些db功能等。这个库在维护模式下非常复杂,是使用maven构建的标准Java8JAR

我们现在想要构建Java11应用程序——它们需要使用AcmeLib。我的第一个想法是继续在Java8中构建AcmeLib——当导入Java11应用程序时,它会很好地工作(*其中关键是更新AcmeLib依赖项)

我有另一个想法来构建AcmeLib的Java8和Java11版本。我可以用maven配置文件来实现这一点(因为它们只在lib之间区分pom内容,例如插件配置等)


java-11
11
所以2个配置文件,意味着2个构建-所以我的问题是(关于时间!)我想知道这是否可能是一个反模式?另外,人们对命名约定有什么建议吗?当前的lib版本是5.5版本,因此我可以创建一个11版本

<!--  Java 8 complied -->
<artifactId>AcmeLib</artifactId>
<version>5.6</version>

<!--  Java 11 complied -->
<artifactId>AcmeLib</artifactId>
<version>11</version>

阿克梅利布
5.6
阿克梅利布
11

好的,如果lib可以使用Java 8构建,并且在Java版本之间没有任何不同的依赖项,那么我就使用Java 8版本-它应该与Java 11 VM完全兼容。IMO不需要提供同一事物的两个版本,它们只在类版本上有所不同-最终这只会导致混淆。@Thomas,除非该库使用一些内部JDK类,这些类使用modules@Ivan是的,这就是我的部分意思“不同Java版本之间的依赖关系”:)您必须提供两个不同的结果工件,其中一个是根据第一个(JDK 8)构建的,另一个是根据第二个(JDK 11)构建的…不可能有其他方法,这意味着您需要创建两个单独的工件,这意味着多模块构建会产生不同的工件。。
<!--  Java 8 complied -->
<artifactId>AcmeLib</artifactId>
<version>5.6</version>

<!--  Java 11 complied -->
<artifactId>AcmeLib</artifactId>
<version>11</version>