0

プロジェクトの現在のバージョンがスナップショット バージョンの場合はスナップショット リポジトリ (構成済みプロパティ project.distributionManagement.snapshotRepository.url を使用) を使用して、またはリリース リポジトリ (構成済みプロパティ project を使用) を使用して、リモート リポジトリへの手動ファイル展開を構成したいと考えています。 .distributionManagement.repository.url) それ以外の場合。

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

4

3 に答える 3

2

ビルダー ヘルパー bsh を使用して、ディストリビューション管理構成から正しいリポジトリを使用する回避策があります。正しい値でプロパティを設定します。次に、maven deploy プラグインが、ゴールの deploy-file とこの URL で呼び出されます。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.12</version>
    <executions>
        <execution>
            <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>
于 2016-12-16T09:29:11.777 に答える
0

対応する pom.xml ファイルをサポートしていないアーティファクト (おそらく json テキスト ファイル) をデプロイする必要がある場合は、 deploy-file ターゲットを使用できます。

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 にも簡単に適応できます。ここで興味深いのは、repositoryId です。これは、settings.xml 内の既存の認証を指す必要があります。

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

これがあなたを助けることを願っています^^

于 2016-12-16T10:00:00.140 に答える