5


私は何かが足りないと思います..
私のプロジェクトをリリースしたいと思います。
pom に maven-release-plugin を追加しました。さらに、java 以外に別のソース コード dir があります (gen-src と呼びます)。Maven リリースで最初のステップを実行する (つまり、準備する) ときはすべて問題ありませんが、実行するときは gen-src が考慮されません。

<plugin>
       <groupId>org.codehaus.mojo</groupId>
      <artifactId>build-helper-maven-plugin</artifactId>
      <version>1.7</version>
       <executions>
          <execution>
               <id>add-source</id>
               <phase>generate-sources</phase>

               <goals>
                  <goal>add-source</goal>
               </goals>
               <configuration>
                   <sources>
                        <source>src/main/gen_src</source>
                   </sources>
               </configuration>
          </execution>
       </executions>
    </plugin>

位相が発生源であることと関係があるのではないかと思います。add-source ゴールを別のフェーズにアタッチする必要がありますか? はいの場合、どのように?私もここで
読みました-これは同様の問題ですが、フレックスを使用していません..答えはありません。何か案が?ありがとう。

4

2 に答える 2

1

私は過去に同じ問題を抱えていて、何が起こっているのか知っていると思います。release:perform フェーズでは、リリースされるタグのコピーを「target/checkout」フォルダーにチェックアウトし、maven プロセスをフォークしてこのチェックアウトを構築します。release:perform フェーズでのみ問題があるため、「./」フォルダーではなく、「target/checkout」フォルダーで fork プロセスを実行しているという事実に関連している必要があります。

ビルドヘルパーを削除してこの問題を修正しましたが、同じことができるかどうかはわかりません。そのため、もし私があなたなら、構成で相対パスを避けてみます。次のように build-helper を構成できます。

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>1.7</version>
   <executions>
      <execution>
           <id>add-source</id>
           <phase>generate-sources</phase>

           <goals>
              <goal>add-source</goal>
           </goals>
           <configuration>
               <sources>
                    <source>${basedir}/src/main/gen_src</source>
               </sources>
           </configuration>
      </execution>
   </executions>
</plugin>

${basedir} を明示的に定義すると、この問題を回避できます。これは、${basedir} が現在のパス (your_workspace/project) ではなくフォーク パス (your_workspace/project/target/checkout) に解決されるためです。これで問題が解決しない場合は、実行フェーズでのみエラーが発生しないはずなので、build-helper-maven-plugin に対してバグを報告する必要があると思います。

于 2011-12-26T14:38:46.597 に答える
0

生成されたソースクラスはバイナリjarに組み込まれません。通常のソースと生成されたソースの両方をコンパイルした結果の.classファイルのみが見つかります。ただし、Mavenリリースプラグインには、追加のソースディレクトリがソースjarに含まれます。

他のフェーズで「ソースの追加」目標を実行する必要はありません。便利だと思うのは、クリーンなプラグインに追加のディレクトリを含める必要があることを知らせることです。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>2.4.1</version>
<configuration>
    <filesets>
        <fileset>
            <directory>${basedir}/src/main/gen_src</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </fileset>
    </filesets>
</configuration>
</plugin>
于 2011-09-02T08:33:19.063 に答える