0

同じプロジェクトの新しい pom.xml で build.xml (ant) を実行しようとしています。ただし、build.xml:104(javac) のコンパイル時に何を試しても、常に NullPointerException が発生します。ビルドは ant 自体で成功します。

javac ターゲットを持つ maven で build.xml を実行することに関する洞察が役立ちます!

=============== Environment =============== 

C:\source\GWTRPCTest>mvn -version
Listening for transport dt_socket at address: 5005
Apache Maven 2.2.1 (r801777; 2009-08-06 14:16:01-0500)
Java version: 1.6.0_31
Java home: c:\Program Files (x86)\Java\jdk6_31\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7" version: "6.1" arch: "amd64" Family: "windows"

=============== Log =============== 

C:\source\GWTRPCTest>mvn package
Listening for transport dt_socket at address: 5005
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO]    task-segment: [package]
[INFO] ------------------------------------------------------------------------
[INFO] [version:setversion {execution: version}]
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\source\GWTRPCTest\src\main\resources
[INFO] skip non existing resourceDirectory C:\source\GWTRPCTest\src\main\resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] No sources to compile
[INFO] [antrun:run {execution: generate-sources}]
[INFO] Executing tasks

init:
    [mkdir] Created dir: C:\source\GWTRPCTest\build
    [mkdir] Created dir: C:\source\GWTRPCTest\build\classes
    [mkdir] Created dir: C:\source\GWTRPCTest\deploy

bootstrap.maven.tasks:
    [mkdir] Created dir: C:\source\GWTRPCTest\build\lib
      [get] Getting: http://artifactory.bpm.ibm.com:8081/artifactory/simple/ext-release-local/org/apache/maven/maven-artifact-ant/2.1.0/maven-artifact-ant-2.1.0.jar
      [get] To: C:\source\GWTRPCTest\build\lib\maven-ant-tasks-2.1.0.jar

init.maven.tasks:

prepare:
     [echo]
     [echo] *** The file c:/source/lon.war should be from a non-development build...
     [echo]
     [copy] Copying 5 files to C:\source\GWTRPCTest\build\lib

extractLonAssets:
    [unjar] Expanding: c:\source\lon.war into C:\source\GWTRPCTest\build\lon.war.dir
      [jar] Building jar: C:\source\GWTRPCTest\build\ibm-web.jar

compile:
    [javac] C:\source\GWTRPCTest\build.xml:104: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 5 source files to C:\source\GWTRPCTest\build\classes
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] An Ant BuildException has occured: The following error occurred while executing this line:
C:\source\GWTRPCTest\build.xml:104: java.lang.NullPointerException

[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 minutes 22 seconds
[INFO] Finished at: Fri Sep 06 10:53:59 CDT 2013
[INFO] Final Memory: 46M/618M
[INFO] ------------------------------------------------------------------------
4

1 に答える 1

0

maven で使用される ant のバージョンと、システム上の ant のバージョンに違いがあると思います。build.xml ファイルで実行されるターゲットの先頭に次の行を追加して確認します。

<echo message="Ant version is: ${ant.version}"/>

次に、ant と Maven の両方で実行します。それらが一致しない場合は、maven が使用している特定のバージョンの ant をダウンロードして、同じエラーが発生するかどうかを確認してください。もしそうなら、あなたはこれが問題であることを知っています。

アップデート

私がこの問題を抱えていたとき、私はこの問題を回避することができました。デフォルトで使用するものではなく、より新しいバージョンの ant を依存関係として使用するように maven-antrun-plugin に指示できます。たとえば、antrun コードをバージョン 1.9.3 で動作させることができましたが、デフォルト バージョンの 1.8.2 では動作しなかったため、次のコードを使用しました。

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <id>generateSources</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target>
                    <echo message="Ant version for antrun is ${ant.version}"/>
                    <!-- Other ant stuff here-->
                </target>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <!--The default version of ant used for antrun (1.8.2) causes above to
        hit a NullPointerException.  Ant 1.9.3 doesn't have this issue. -->
        <dependency>
          <groupId>org.apache.ant</groupId>
          <artifactId>ant</artifactId>
          <version>1.9.3</version>
        </dependency>
    </dependencies>
</plugin>

ご覧のとおり、antrun プラグインを使用してソース コードを生成していました。独自の目的に合わせてフェーズなどをカスタマイズする必要があります。お役に立てれば。

于 2014-05-01T14:51:23.537 に答える