2011-11-22 47 views
1

我的主要项目是使用java 1.6,我需要提供一个客户端jar到一个只能在java 1.5上运行的系统。客户端jar是一个单独的模块,所以我可以在maven-compiler-plugin中指定java版本。但是,客户端jar依赖于1.6版本的核心jar。到Maven项目构建额外的jar编译不同的java版本

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

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

我没有时间发布完整的答案,但是您可以使用构建配置文件来管理这些类型的事情,以设置您的构建寻找并相应采取行动的属性 - http://maven.apache.org/guides/简介/ introduction-to-profiles.html –

回答

0

为什么您的客户端项目取决于核心?

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

  1. 设定的目标在全球范围内1.5,并确保你是不是在你的代码中使用1.6 JDK的东西(至少在客户端上的JDK 1.5调用的代码的一部分) 。
  2. 使用配置文件+分类器为不同的JDK生成工件(see this question)。不过,您必须多次运行内置程序。实际上,每个版本都会使用相同的目标版本编译所有内容,所以这种方法只是1)的一点改进,允许您为多个JDK版本发布您的工件。

如果客户端代码实际上不使用内核(例如,它只使用来自内核或其他非Java内容的WSDL),则可以通过移动东西来分离“共享”模块来移除此依赖项。

+0

谢谢,我最终使用了配置文件,并覆盖了默认的编译和jar配置以生成我的客户端jar。 – ltfishie

相关问题