多くの試行錯誤を経て、Raghuram のものと非常によく似た構成にたどり着きました。しかし、archiva を使用して、まだ注目に値する可能性があることを 1 つまたは 2 つ見つけました。また、リポジトリに直接アクセスする代わりに、自分のプロジェクト ( <distributionManagement/>
pom.xml で設定) がアクセスできるように構成内のミラーを使用しました。
これは私のmaven settings.xmlの関連部分です:
<!-- set up servers to point to mirror, for use in project pom -->
<servers>
<server>
<id>my.snapshots</id> <!-- use name of the mirror here -->
<username>user</username>
<password>pwd</password>
</server>
</servers>
<!-- map mirror names to actual repositories -->
<mirrors>
<!-- leave the default mirror in place -->
<mirror>
<id>archiva.default</id>
<mirrorOf>*</mirrorOf>
<url>http://server:port/archiva/repository/internal/</url>
</mirror>
<!-- enter my own -->
<mirror>
<id>my.snapshots</id>
<mirrorOf>archiva.snapshots</mirrorOf>
<url>http://server:port/archiva/repository/snapshots/</url>
</mirror>
<mirrors>
<!-- activate the repo for artifact downloads by setting profile -->
<profiles>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository> <!-- mirror will be used during runtime instead of this -->
<id>archiva.snapshots</id> <!-- do not use mirror name here -->
<url>http://server:port/archiva/repository/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
<mirrors>
セクションとセクションでは異なる ID を指定する必要があることがわかった<profiles>
ので、Raghuram と同じ名前を付けることは許可されていないようでした。
ここで、settings.xml が配置されたので<distributionManagement>
、プロジェクトの pom.xml のセクションを変更することに着手しました。正確には、すべてのプロジェクトの親である pom でこの設定を変更しました。これには主に<distributionManagement>
セクションが含まれ、それ以外はほとんど含まれていません。この親 pom 自体がアーカイブにデプロイされます。
これは、親 pom.xml の関連セクションです。
<distributionManagement>
<repository>
...
</repository>
<snapshotRepository>
<id>my.snapshots</id>
<name>Archiva Managed Snapshot Repository</name>
<url>http://server:port/archiva/repository/snapshots</url>
<layout>default</layout>
</snapshotRepository>
</distributionManagement>
この種の合理化されたものには、いくつかの利点があると思います。
自分のアーティファクト (親 pom を含む) に依存するプロジェクトをビルドできるようになりました。これらのアーティファクトをローカル ビルド リポジトリに置く必要はありません (これをテストするためにローカル リポジトリを消去しました)。
ダウンロード ( <dependencies>
pom.xml のセクション) とアップロード ( <distributionManagement>
pom.xml のセクション) は、ミラーを介して処理されるようになりました。