2017-10-10 26 views
-1

まず、私はMavenを初めて使っています。その概念の多くを本当に理解していないので、noobの間違いに対する私の謝罪です。チェックアウト後にMavenビルドプロジェクト

私はプロジェクトがすべてのプロジェクトであるローカルのsvnリポジトリからブランチをチェックアウトするプロジェクトに取り組んでいます。それらのプロジェクトの1つにmvn packageを呼び出すと、他のすべてのプロジェクトをproject.earファイルにコンパイルするファイルpom.xmlがあります。

私がする必要があるのは、外部pom.xmlファイルを作成してブランチをチェックアウトし、その後最近入手したプロジェクトの1つにpom.xmlを呼び出すことです。この(擬似コード)のような何か:

checkout branch_url checkoutDir=src 
mvn src/project-with-pom/pom.xml package 

は私がチェックアウト(scm:checkout)を行うために、SCMプラグインを使用しているが、私はチェックアウトした後、その内部pom.xmlファイルを呼び出す方法を見つけ出すように見えることはできません。

私は、実行プラグインを使用してみましたが、私はそれはそれはいつも私に次を与えるために、その目的だとは思わない:

んが、プロジェクトが実行のために選択されていません。

呼び出し

<!-- scm:checkout plugin --> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-invoker-plugin</artifactId> 
    <version>3.0.1</version> 
    <configuration> 
     <setupIncludes> 
      <setupInclude>${basedir}/src/project-with-pom/pom.xml</setupInclude> 
     </setupIncludes> 
     <pomIncludes> 
      <pomInclude>*/pom.xml</pomInclude> 
     </pomIncludes> 
    </configuration> 
    <executions> 
     <execution> 
      <id>create_ear_file</id> 
      <goals> 
       <goal>package</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

私もscm:bootstrapを使用して試してみましたが、私は常にチェックアウトが完了した直後に次のエラーを取得する:

をこのプロジェクトは、以前によるビルドから禁止されています失敗。

SCMは:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-scm-plugin</artifactId> 
    <version>1.9.5</version> 
    <configuration> 
     <username>user</username> 
     <password>pass</password> 
     <connectionType>connection</connectionType> 
     <scmVersion>branch_name</scmVersion> 
     <scmVersionType>branch</scmVersionType> 
     <checkoutDirectory>${basedir}/src</checkoutDirectory> 
     <workingDirectory>${basedir}</workingDirectory> 
     <pushChanges>false</pushChanges> 
     <goals>package</goals> 
     <goalsDirectory>/src/project-with-pom</goalsDirectory> 
     <includes>POM.xml</includes> 
    </configuration> 
</plugin> 

ブートストラップ私はまた、モジュールを使用して試してみましたが、モジュールのファイルが存在しないので、それは常に私にエラーを与えます。私はプロフィールでこれをやってみたが、何もしなかった。

これを行う方法はありますか?

また、svnのパスワードとしてプレーンテキストを使用しないようにする方法はありますか?

編集

私はそれほど明確ではなかったと思います。私はそれを言い換えようとします。

私の最終目標は、単一のmavenコマンドでプル&ビルドされたクリーンなプロジェクトを作成することです。 Subversiveを使用してブランチをチェックアウトする場合、問題なくブランチから.EARファイルをコンパイルするためにmavenを使用できます。しかし、私がしたいのはSubversiveの代わりにscm:checkoutを使い、プロジェクトをビルドすることです。すべてを単一のmavenコマンドで行います。

実行のようになります。

mvn scm:checkout -DcheckoutDirectory=src & mvn package -f src/project-with-pom/pom.xml 

ので、私は「子供にはない取得、私はマルチモジュールアプローチを使用してみましたが、Mavenのは、最初の子モジュールと、親モジュールを構築しているようです存在 "エラーです。親モジュールが最初にcheckoutコマンドを実行してから、checkoutディレクトリの中にある子モジュールをビルドする必要があります。

答えて

0

あなたは-fパラメータ

http://books.sonatype.com/mvnref-book/reference/running-sect-options.html

を使用して異なるPOMファイルとMavenを呼び出すことができます。しかし、実際に、私は完全にあなたの要求(または、プロジェクト構造)を理解していない:すべてのMavenプロジェクトはpom.xmlを持っています。サブディレクトリにPOMがある場合は、マルチモジュールプロジェクトがあります。 POMなしでMavenプロジェクトを作成することはできません。

+0

申し訳ありません申し訳ありませんが、私は明らかにしませんでした。私がする必要があるのは、最初にローカルリポジトリからファイルを取得し、その後、プロジェクトの残りの部分を構築するためにpomファイルを呼び出します。マルチモジュールとして使用しようとすると、「子モジュール...存在しません」というエラーが表示されます。基本的に、単一のmvnコマンドを使用してファイルを取得し、別のpomファイルを呼び出します。 – jmhg92