2

私のMavenビルドの最後に、この明確な目的のために存在する1つのモジュールが、他のさまざまなモジュールからアーティファクトを収集し、Assemblyプラグインを使用してそれらをアーカイブに圧縮します。完了すると、Deployプラグインを使用してそれらをNexusにデプロイします。

歴史的な理由から、このパッケージモジュールはと呼ばれるbundleため、アーティファクトは最終的に呼び出されmygroup:bundle、Nexusに分類されます。

むしろそれらを下mygroup:myprojectnameに表示させたいのですが、その場所にそれらを展開する方法がわかりません。座標を変更するためにDeployプラグインのdeploy-file目標を構成しようとしましたが、成功しませんでした。追加の複雑さとして、プロジェクトのメインコードモジュールはすでに呼び出されmyprojectnameているため、展開時にグループが空になることはありません。ただし、分類子と型のおかげで、何も上書きする必要はありません。

モジュールの名前を変更する以外に、どういうわけかこれを行うことができますか?

4

2 に答える 2

10

デプロイプラグインには、必要なすべての機能があります。
構成でG / A / V座標を設定し、任意の数の追加のアーティファクトを任意の座標にデプロイできます。ただし、リポジトリに自動的にデプロイされることはありません-distributionManagementセクションで指定されたURL。

重複を避けるために、私は最終的にGMavenプラグインに頼り、それを使用してプロジェクトのバージョンをチェックし(で終わるか-SNAPSHOT)、の対応するセクションから直接取得したURLで新しいプロパティを設定しましたdistributionManagement

両方のプラグインの構成は次のとおりです。

          <plugin>
            <groupId>org.codehaus.groovy.maven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <executions>
                <execution>
                    <id>choose-target-repository</id>
                    <phase>initialize</phase>
                    <goals>
                        <goal>execute</goal>
                    </goals>
                    <configuration>
                        <source>
                            if (project.version.endsWith("-SNAPSHOT")){
                              project.properties.targetrepository = project.distributionManagement.snapshotRepository.url;
                            }
                            else {
                              project.properties.targetrepository = project.distributionManagement.repository.url;
                            }
                        </source>
                    </configuration>
                </execution>
            </executions>

           <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.7</version>
            <configuration>
                <skip>true</skip>
            </configuration>
            <executions>
                <execution>
                    <id>deploy-myclassifier</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>deploy-file</goal>
                    </goals>
                    <configuration>
                        <file>
                            ${project.build.directory}/${project.artifactId}-${project.version}-myclassifier.zip
                        </file>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>myprojectname</artifactId>
                        <version>${project.version}</version>
                        <classifier>myclassifier</classifier>
                        <repositoryId>nexus</repositoryId>
                        <url>http://url-to-nexus</url>
                    </configuration>
                </execution>
            </executions>
        </plugin>
于 2012-11-29T10:24:15.013 に答える
2

maven-deploy-pluginでは、次のようにリポジトリのURLとIDを指定できます。

<repositoryId>${targetrepositoryid}</repositoryId>
<url>${targetrepository}</url>

したがって、と同様にproject.distributionManagement.repository.url、を定義することもできますproject.properties.targetrepositoryid = project.distributionManagement.snapshotRepository.id;

于 2014-11-06T13:59:43.973 に答える