Maven项目依赖于JDK版本

时间:2010-04-02 14:06:24

标签: maven-2 dependencies java

我的项目需要使用特定版本的JDK构建。

问题不在源和目标参数中,而是在编译期间使用的运行时的jar中。 在某些情况下,如果我尝试使用错误的JDK进行编译,则会出现编译错误,但有时构建成功并且在使用jar时会出现运行时错误。

例如在eclipse中,我有能力在.classpath文件中为项目建立执行环境。

有没有办法在maven中处理这种情况?

我希望能够像处理POM文件中项目的其他依赖项一样处理JRE依赖。

更新:

当我提出这个问题时,接受的解决方案是最好的,所以我不会改变它。与此同时,我们引入了一种解决这类问题的新方案:Maven Toolchain。请点击链接了解更多详情。

3 个答案:

答案 0 :(得分:2)

  

我的项目需要使用特定版本的JDK构建。

您可以使用Maven Enforcer plugin强制使用特定版本的JDK:

<project>
  [...]
  <build>
   <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-versions</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <version>1.5</version>
                </requireJavaVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

但我不确定我是否真的理解这个问题。如果这不是您想要的,也许您可​​以在配置文件中声明您的JDK特定依赖项,并使用基于JDK版本的激活触发器。例如:

<profiles>
  <profile>
    <activation>
      <jdk>1.5</jdk>
    </activation>
    ...
  </profile>
</profiles>

当JDK的版本以“1.5”开头时,此配置将触发配置文件。

答案 1 :(得分:2)

我发现了这篇文章:

http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <verbose>true</verbose>
          <fork>true</fork>
          <executable>${JAVA_1_4_HOME}/bin/javac</executable>
          <compilerVersion>1.3</compilerVersion>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

答案 2 :(得分:1)

我相信这可以通过你的pom中的以下插件来解决:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin> 

您可以在此处定位1.6版,或编写自己的版本

相关问题