Maven 2 maven antrun插件1.6希望编译Java 1.4.2版本的类

Maven 2 maven antrun插件1.6希望编译Java 1.4.2版本的类,maven-2,maven-ant-tasks,Maven 2,Maven Ant Tasks,我正在使用ant build.xml生成类,并使用JDK中的tools.jar编译它们 我使用的是MAVEN 2.2.1版本。JDK1.5来执行MAVEN。因为maven 2.2.1版本只支持比JDK1.5更高的版本,所以我不得不使用它 此maven antrun插件不允许为编译器指定源版本或目标版本。 因此,生成的类是针对当前运行的JVM(即JDK)编译的,使用插件依赖项中提供的rt.jar和tools.jar(或放在JVM的lib/ext目录中) 由于Maven是在1.5 JVM(jdk1.

我正在使用ant build.xml生成类,并使用JDK中的tools.jar编译它们

我使用的是MAVEN 2.2.1版本。JDK1.5来执行MAVEN。因为maven 2.2.1版本只支持比JDK1.5更高的版本,所以我不得不使用它

此maven antrun插件不允许为编译器指定源版本或目标版本。 因此,生成的类是针对当前运行的JVM(即JDK)编译的,使用插件依赖项中提供的rt.jar和tools.jar(或放在JVM的lib/ext目录中)

由于Maven是在1.5 JVM(jdk1.5.0_22)中执行的,所以我的项目需要用jdk1.4.2版本编译这些类,因为我要部署它们的服务器运行在1.4 JVM上,所以当我从eclipse或命令行使用Maven插件编译时,我遇到异常

我找不到方法告诉antrun使用不同的java版本编译我的类。 我尝试了以下解决方法:

  • 更改tools.jar依赖项以指向1.4版本=>由于编译器使用当前运行的1.5 JVM中的rt.jar,类文件版本不匹配(版本49.0,预期为48.0)
  • 将依赖项添加到1.4 rt.jar=>它不会改变任何东西,因为rt.jar应该在引导类路径中指定
下面是我正在使用的示例代码

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <id>install</id>
            <phase>install</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <source>${java-version}</source>
                <target>${java-version}</target>
                <compilerVersion>${java-version}</compilerVersion>
                <compilerArguments>
                    <classpath>${java.home}/lib/tools.jar</classpath>
                    <classpath>${java.home}/jre/lib/rt.jar</classpath>
                </compilerArguments>
                <tasks>
                    <ant antfile="WPSEjb_build.xml"/>
                </tasks>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>crimson</groupId>
            <artifactId>crimson</artifactId>
            <version>1.1.3</version>
        </dependency>
        <dependency>
            <groupId>sun.jdk</groupId>
            <artifactId>tools</artifactId>
            <version>1.4.2</version>
            <scope>system</scope>
            <systemPath>${java.home}/lib/tools.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>com.sun</groupId>
            <artifactId>rt</artifactId>
            <version>${java-version}</version>
            <scope>system</scope>
            <systemPath>${java.home}/jre/lib/rt.jar</systemPath>
        </dependency>
    </dependencies>
</plugin>

请告诉我如何使用maven antrun插件设置JDK 1.4.2版本以编译我的类。

较新版本的JDK可以编译代码以在较旧的JDK上运行。如果服务器上的JDK版本是1.4,只需将目标设置为1.4即可

您可能希望签出for 1.5并签出target选项,以便更好地了解编译器如何处理此问题


EDIT:为了澄清,pom中调用目标版本的部分是${java version}。它将作为目标选项传递给javac。您需要告诉它1.4版,因为不使用次要版本号。

我可以使用以下命令构建它

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2</version>
            <executions>
              <execution>
                <id>install</id>
                <phase>install</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
              </execution>
            </executions>
            <configuration>             
              <executable>C:\test\Ejb.bat</executable>
            </configuration>
          </plugin>

org.codehaus.mojo
execmaven插件
1.2
安装
安装
执行官
C:\test\Ejb.bat

我正在调用
Ejb.bat
文件下的
ant-f build.xml
build命令。它使用了我在
build.xml
下给出的所有配置,因此我现在可以使用JDK1.4.2版本进行构建

您好,Jon7,我正在尝试使用Build.xml中的以下Weblogic Workshop命令,我无法在命令下提供javac信息,所以我希望在maven antrun插件下设置编译器信息,但到目前为止,我还没有得到任何答案,我如何为这个插件提供不同的编译器信息。我的build.xml信息如下所示。如何在maven antrun插件下提供JDK1.4.2作为编译器,你的意思是我必须通过1.4,而不是1.4.2??是的。没有理由使用旧的jdk。所有新的JDK都可以为旧版本的java构建。它不起作用……我无法为ant插件编译JDK1.4或1.4.2。我的意思是我不能太应用它。Ant插件有问题。或者可能是我没有得到正确的答案。请解释你所说的“它不工作”和“我无法应用它”是什么意思。如果你收到错误消息,请发布它。
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2</version>
            <executions>
              <execution>
                <id>install</id>
                <phase>install</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
              </execution>
            </executions>
            <configuration>             
              <executable>C:\test\Ejb.bat</executable>
            </configuration>
          </plugin>