1

Mavenリリースプラグインを使用する場合、リリースビルドの一部として(ant tastを介して)事前作業を行い、同じコードベースが使用されることを保証します(そのため、間にコミットがありません)。これを行うために呼び出したいantタスクがありますが、次の問題が発生しています。

私のpomファイル内:

            <configuration>
                <preparationGoals>antrun:run -Dtarget=${antTaskJarBuildXML} clean verify</preparationGoals>
            </configuration>

ここで、${antTaskJarBuildXML}は次のとおりです。

<target><ant antfile=\"../build.xml\" target=\"iv_dependency_build\" /></target>

release:performを実行すると、次のログが表示されます。

... 
[INFO] Not generating release POMs
[INFO] Executing goals 'antrun:run -Dtarget="<target><ant antfile=\"../build.xml\" target=\"iv_dependency_build\" /></target>" clean verify'...
[WARNING] Maven will be executed in interactive mode, but no input stream has been configured for this MavenInvoker instance.
[INFO] [INFO] Scanning for projects...
[INFO] [WARNING]
[INFO] [WARNING] Some problems were encountered while building the effective model for com.xactsites:iv:war:12.12.4.9
[INFO] [WARNING] The expression ${version} is deprecated. Please use ${project.version} instead.
[INFO] [WARNING]
[INFO] [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[INFO] [WARNING]
[INFO] [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[INFO] [WARNING]
[INFO] [INFO]
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Building iv 12.12.4.9
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [WARNING] The artifact javax.xml:jaxrpc:jar:1.1 has been relocated to javax.xml:jaxrpc-api:jar:1.1
[INFO] [INFO]
[INFO] [INFO] --- maven-antrun-plugin:1.7:run (default-cli) @ iv ---
[INFO] [INFO] No ant target defined - SKIPPED
[INFO] [INFO]
[INFO] [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ iv ---
[INFO] [INFO] Deleting C:\dev\apps\iv\target
[INFO] [INFO]
...

そして、ログに示されているように、ターゲットが指定されていないと言われています。antrunのドキュメントから理解したことに従いました

  1. ターゲット名を渡す方法に何かが欠けていますか?
  2. これが最善のアプローチですか?
  3. 私が行方不明になっているのは逃げる問題ですか?私はWindowsを使用しており、これはxml($ {antTaskJarBuildXML})に定義された実際の値です。

    "&lt;target&gt;&lt;ant antfile=\"../build.xml\" target=\"iv_dependency_build\" /&gt;&lt;/target&gt;"

編集

@carlspringはいくつかの素晴らしいフィードバック(彼の答えに+1)を与えましたが、すべてがうまくいかないという問題の性質のために、私はこれを機能させることができませんでした。Mavenはリリースプロセス全体を制御することを期待していますが、事前にantタスク(問題のビルドに必要な依存関係を作成する)を実行する必要があります。また、この事前作業タスクと通常のビルドが同じgitタグ/ハッシュに対してビルドされていることを確認する必要があります。私の現在の解決策は、ここで説明するように、リリースプラグインが実行する手順を順番に実行することです。これにより、gitタグを作成し、同じgitタグに対してMavenビルドを実行できます。そこにもっと良いアイデアがあれば、貢献してください!

4

1 に答える 1

2

私の提案は、プロファイルを定義し、それにant-run定義を含めることです。

リリースプラグインはフォークします。つまり、コマンドライン引数は無視されます。

更新: これを試してください:

<?xml version="1.0" encoding="UTF-8"?>
<project ...>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.3.2</version>

                <executions>
                     <execution>
                         <id>execute-prepare</id>
                         <!-- Set up your Ant stuff here -->
                         <goals>
                              <goal>prepare</goal>
                         </goals>
                         <configuration>
                             <!-- If you have args specific for your release, put them here: -->
                             <arguments>-Pant-run-release</arguments>
                             <releaseProfiles>ant-run-release</releaseProfiles>
                             <mavenExecutorId>forked-path</mavenExecutorId>
                         </configuration>
                     </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>ant-run-release</id>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>1.7</version>
                        <executions>
                            <execution>
                                <id>execute-something</id>
                                <!-- Set up your Ant stuff here -->
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
于 2012-12-06T01:24:01.410 に答える