Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven项目构建由不同java版本编译的附加jar_Java_Maven 2 - Fatal编程技术网

Maven项目构建由不同java版本编译的附加jar

Maven项目构建由不同java版本编译的附加jar,java,maven-2,Java,Maven 2,我的主要项目是使用Java1.6,我需要为只能在Java1.5上运行的系统提供一个客户机jar。客户端jar是一个单独的模块,因此我可以在maven编译器插件中指定java版本。但是,客户机jar依赖于1.6版本的核心jar。单程 我在maven jar插件中使用了“test jar”目标来生成一个测试jar供其他模块使用。我希望做一些类似的事情,并在我的客户端模块中使用它,具有以下依赖性: <dependency> <groupId>org.mygroup<

我的主要项目是使用Java1.6,我需要为只能在Java1.5上运行的系统提供一个客户机jar。客户端jar是一个单独的模块,因此我可以在maven编译器插件中指定java版本。但是,客户机jar依赖于1.6版本的核心jar。单程

我在maven jar插件中使用了“test jar”目标来生成一个测试jar供其他模块使用。我希望做一些类似的事情,并在我的客户端模块中使用它,具有以下依赖性:

<dependency>
    <groupId>org.mygroup</groupId>
    <artifactId>module-core</artifactId>
    <classifier>java1_5</classifier>
</dependency> 

org.mygroup
模芯
java1_5

为什么您的客户项目依赖于核心

如果它使用来自核心的代码,那么显然也需要为1.5编译核心JAR。您在这里有几个选项:

  • 将目标全局设置为1.5,并确保代码中没有使用1.6JDK内容(至少在JDK1.5上客户端调用的代码部分)
  • 使用profiles+分类器为不同的jdk()生成工件。但是,您必须多次运行构建的。实际上,每个构建都将使用相同的目标版本编译所有内容,因此这种方法只是对1)的一点改进,允许您为多个JDK版本发布工件

  • 如果客户机代码实际上不使用core(例如,它只使用core中的WSDL或其他非Java内容),您可以通过将内容移动到单独的“共享”模块来删除此依赖关系。

    我没有时间发布完整的答案,但是,您可以使用构建概要文件来管理这些类型的事情,以设置构建文件查找并相应地执行操作的属性——谢谢,我最终使用概要文件完成了这项工作,并重写了默认的编译和jar配置以生成my client jar。