2016-02-02 4 views
7

私のJavaプロジェクトから生成されたjarと共にArtifactoryにカスタムjarを配備する必要があります。現在、私は見つけることができる唯一の方法は、使用してコマンドラインの目標を通じてです:cloゴールの代わりにpomまたはsettings.xmlにmvn deploy:deploy-fileを含めることができます

mvn deploy:deploy-file -DgroupId=<group-id> \ 
    -DartifactId=<artifact-id> \ 
    -Dversion=<version> \ 
    -Dpackaging=<type-of-packaging> \ 
    -Dfile=<path-to-file> \ 
    -Durl=<url-of-the-repository-to-deploy> 

はポンポンファイルでこれを含めての方法はありますか?プラグインや何か?

+0

このJARとは何ですか?それはMavenビルドによって生成されますか?どうやって?例えば、 'maven-assembly-plugin'から? – Tunaki

+0

いいえ、jarファイルは通常のJavaコンパイルを使用してビルドされています。これはmavenプロジェクトではありません。 – user171943

答えて

8

あなたの値で設定されたdeployフェーズにバインドされたmaven-deploy-plugin:deploy-fileゴールの実行を定義するだけです。プロジェクトをデプロイすると、この実行が呼び出され、JARがデプロイされます。

<plugin> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <version>2.8.2</version> 
    <executions> 
     <execution> 
      <id>deploy-file</id> 
      <phase>deploy</phase> 
      <goals> 
       <goal>deploy-file</goal> 
      </goals> 
      <configuration> 
       <file><!-- path-to-file --></file> 
       <url><!-- url-of-the-repository-to-deploy --></url> 
       <groupId><!-- group-id --></groupId> 
       <artifactId><!-- artifact-id --></artifactId> 
       <version><!-- version --></version> 
       <packaging><!-- type-of-packaging --></packaging> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

あなたはおそらくもrepositoryIdを追加する必要があります注意してください。これは<id><server>セクションにマップするサーバーIDで、settings.xmlです。

+0

しかし、 ' deploy 'が削除された場合、なぜ動作しませんか? –

+0

@ Jean-LouisJouannic実行はフェーズにバインドされないため、デフォルトでは実行されません。' deploy'を指定すると、 'mvn deploy'が実行されたときにこの実行が実行されます。 – Tunaki

+0

私は同意しますが、 ' deploy'を削除し、 'mvn deploy:deploy-file'を呼び出すだけで動作しますか?しかし、そうではありません、なぜ私は取得しません。 –

0

custom maven settings.xmlをTeamCityにアップロードすることができます。ここでは、on this documentation pageのようにdistributionManagementとserverを指定する必要があります。その後、アップロードされた設定を使用するようにビルドステップを変更すると、このステップで実行されたゴールセットに単にdeploy gialを追加するだけで、デプロイメントが完了します。

+0

私はすでにサーバーとプロキシの設定などを指定するcustom maven settings.xmlを持っていますが、deploy:deploy-file mojoをステップに含めるにはどうすればよいですか? – user171943

+0

distributionManagementタグをsettings.xmlまたはpom.xmlに含めると、deploy:deploy-file goalを実行する必要はありません。 Mavenビルドステップを作成し、settings.xmlを使用して 'deploy'を目標に追加します。 –

0

ArtifactoryマニュアルのWorking with Mavenセクションで詳しく説明します。具体的にはdeploying artifactsの部分です。
さらに、setting Artifactory as a Maven repositoryについてのスクリーンキャストを見ることができます。

Artifactoryを使用してビルド成果物を配備するには、プロジェクトのpomファイルに成果物を配備するターゲットローカルリポジトリのURLを使用してdistributionManagement要素を追加する必要があります。さらに、settings.xmlファイル内のArtifactoryサーバの資格情報をconfigureにする必要があります。
Artifactoryは、distributionManagementスニペットとsettings.xmlの両方の生成に役立ちます(上記のリンクの詳細を参照してください)。

0

私は個人的にはPOMで宣言するのは良いアプローチではないと思います。 たとえば、親POM/super POMから継承した子POMで構成された複数モジュールのMavenプロジェクトがあり、アップロードするカスタムjarが子モジュールの1つにのみ含まれている場合は、明示的に親POM(通常mvn deployがスーパーポンドを実行するために使用されるため)、POM構造を混乱させる構成の実行をスキップするように他のすべての子POMを宣言します。

deploy:deploy-fileの目標はビルドライフサイクルの最後であるため、スクリプトを作成して実行コンフィギュレーションのdeployにリンクする方がよいでしょう。

関連する問題