0

スナップショットリポジトリ(設定されたプロパティproject.distributionManagement.snapshotRepository.urlを使用)を使用してリモートリポジトリに手動ファイルのデプロイメントを設定します。プロジェクトはスナップショット・バージョンまたはリリース・リポジトリ(構成済プロパティーproject.distributionManagement.repository.urlを使用)になります。プロジェクトのバージョンに応じて、手動展開のリリースまたはスナップショットリポジトリを使用します。

私はswagger jsonスキーマをリポジトリにデプロイしたいので、手動デプロイ以外の方法はありませんでした。

+1

をしてください^^役立つことを願っています、あなたはどのように説明することができ、あなたの必要が発散しませんMavenの標準的な動作からですか?私の最初の印象は標準的な振る舞いがあなたのニーズに合っているからです –

+0

私はマニュアル展開の理由を更新しました。 –

+0

リリースまたはスナップショットリポジトリは、使用するバージョンによって決定されます。これは 'XXXX-SNAPSHOT'のようなものを使うとスナップショットリポジトリにデプロイされ、' -SNAPSHOT'なしで何かを使うと、リポジトリを解放するためにデプロイされることを意味します。違うことをするには?手動でデプロイメントを行うには、 'mvn deploy'を実行します。 – khmarbaise

答えて

1

ビルダー・ヘルパーbshを使用して、配布管理構成から正しいリポジトリーを使用することには対処法があります。正しい値でプロパティを設定します。次に、mavenデプロイメントプラグインがgoal deploy-fileとこのURLで呼び出されます。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.12</version> 
    <executions> 
     <execution> 
      <phase>deploy</phase> 
      <goals> 
       <goal>bsh-property</goal> 
      </goals> 
      <configuration> 
       <properties> 
        <property>deploy.url</property> 
       </properties> 
       <source>deploy.url = project.getVersion().endsWith("-SNAPSHOT") ? project.getDistributionManagement().getSnapshotRepository().getUrl() : project.getDistributionManagement().getRepository().getUrl() ;</source> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <version>2.8.2</version> 
    <executions> 
     <execution> 
      <phase>deploy</phase> 
      <goals> 
       <goal>deploy-file</goal> 
      </goals> 
      <configuration> 
       <url>${deploy.url}</url> 
       <repositoryId>releases</repositoryId> 
       <file>${swagger.directory}/swagger.json</file> 
       <groupId>${project.groupId}</groupId> 
       <artifactId>${project.artifactId}</artifactId> 
       <version>${project.version}</version> 
       <packaging>json</packaging> 
       <classifier>swagger</classifier> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
0

あなたの必要性は、あなたがデプロイ・ファイル・ターゲットを使用することができ、それをサポートする対応のpom.xmlファイルをしていないいくつかのアーティファクト(多分JSONテキストファイル)を展開する場合:

http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html

これにより、任意の種類のアーティファクトを任意の起源からMavenリポジトリに展開し、グループ、アーティファクトおよびバージョン座標、および必要なものをコマンドラインで指定することができます。

お使いのバージョンに応じて、適切な場所に展開するために、私はあなたに私たちが同様の目的のために構築されたAntスクリプトのこのフラグメントを提案することができます

<condition property="url" value="${snapshots.repo.url}" else="${releases.repo.url}"> 
      <contains string="${project.version}" substring="-SNAPSHOT"/> 
     </condition> 
     <exec executable="cmd"> 
      <arg value="/c"/> 
      <arg value="mvn.bat"/> 
      <arg value="deploy:deploy-file"/> 
      <arg value="-DgroupId=com.myorg.swagger"/> 
      <arg value="-DartifactId=swagger_file"/> 
      <arg value="-Dversion=${project.version}"/> 
      <arg value="-U"/> 
      <arg value="-Dfile=./mydir/my_swagger_file.json"/> 
      <arg value="-Durl=${url}"/> 
      <arg value="-DrepositoryId=my_repo_id"/> 
      </exec> 

これはWindowsのみで動作しますが、しかし、他のOSにも容易に対応できます。ここで興味深いのビットは、あなたのsettings.xml内の既存の認証を指している必要がありますつまり、リポジトリIDです:

... 
<servers> 
     <server> 
      <id>my_repo_id</id> 
      <username>your_user_for_deployment</username> 
      <password>your_pwd_for_deployment</password> 
     </server> 
</servers> 
... 

これはあなたが

関連する問題