代码之家  ›  专栏  ›  技术社区  ›  Andrea Polci

Maven项目对JDK版本的依赖性

  •  7
  • Andrea Polci  · 技术社区  · 16 年前

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

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

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

    更新:

    当我问这个问题时,公认的解决方案是最好的,所以我不会改变它。同时,针对这类问题提出了一种新的解决方案: Maven Toolchain . 有关详细信息,请访问链接。

    3 回复  |  直到 9 年前
        1
  •  2
  •   Simone Vellei    16 年前

    我发现这篇文章:

    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
  •  2
  •   Pascal Thivent    16 年前

    我有一些项目需要使用特定版本的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”开头时,此配置将触发概要文件。

        3
  •  1
  •   ant    16 年前

    我相信这可以通过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,或者编写自己的版本