私の会社のJFrog.io(fka:ArtifactoryOnline.com)リポジトリに新しいリリースビルドを展開しようとした際に奇妙なバグが発生しました。私が取り組んでいるプロジェクトには複数のmavenモジュールがあり、すべてが単一の親の下にあります。 mavenがビルドするJARファイルをJFrogにアップロードすると、生成されたPOMファイルに誤った親のartifactIdが設定されています。Artifactory/JFrogは生成されたPOMに間違った親のartifactIdを生成しています
私は長い時間を費やしていましたが、私の会社のコードベースでは問題が見つからなかったので、エラーをゼロから再現できるかどうかを決めました。したがって、私はthis throwaway projectにバグを示すようにしました。
親POM、 "ブルーベリー":
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.nbyrd</groupId>
<artifactId>blueberry</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<modules>
<module>blueberryjam</module>
<module>berries</module>
</modules>
</project>
依存POM 1: "ベリー":
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>blueberry</artifactId>
<groupId>org.nbyrd</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>berries</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
完全なプロジェクトをダウンロードで興味方のために、ここでは関係POMファイルがあります従属POM 2:「ベリージャム」:
(これらのPOMファイルはすべて、 )
私は2つのMavenモジュール「ベリー」と「ベリージャム」を持っています。これらは中央の親モジュール「ブルーベリー」の下に収納されています。 。ベリージャムは、ベリーを依存関係として使用しますが、問題に関連するかどうかはわかりません。
プロジェクトをビルドすると、berries-1.0.jar
とberry-jam-1.0.jar
という2つのJARファイルが取得されます。これは予想通りです。この時点で、私はArtifactoryにこれらのアーティファクトをアップロードし、他のプロジェクトがそれらを参照できるようにします。そして、これがトラブルの始まりです。私はberries-1.0.jar
をアップロードすると は、Artifactoryは以下のPOMファイルを生成します:あなたが見ることができるように
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:// maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>berries</artifactId>
<groupId>org.nbyrd</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>berries</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
は、生成されたPOMは間違っている「ベリー」、と親たartifactIdを定義します。どちらの場合も
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:// maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>blueberry-jam</artifactId>
<groupId>org.nbyrd</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>blueberry-jam</artifactId>
<dependencies>
<dependency>
<groupId>org.nbyrd</groupId>
<artifactId>berries</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
が、私はそれが明示的に子-モジュールのPOMファイルの両方に記載されているようPARENTIDは、「ブルーベリー」であることを期待する:私はberry-jam-1.0.jar
をアップロードする際に 同じ問題が発生します。これらの不正なartifactIdsは、これらのライブラリを使用することを不可能にします。これらのライブラリを使用するには、サードパーティのアプリケーションを試みた場合の依存関係をダウンロードする際に、Mavenは次の警告が生成されますし、ビルドが失敗します。
を[警告] org.nbyrdのためのPOM:ベリーます。jar:1.0が無効です、推移的依存関係(もしあれば)、利用可能Artifactoryにアップロードする際に、過去に正しく機能するために使用詳細
この機能のデバッグログを有効にするので、何かがどのように変更された場合、私はわからないではないだろうツールが動作するか、単に私が間違って何かをした場合。何かご意見は?
「これらのアーティファクトをArtifactoryにアップロードして、他のプロジェクトで参照できるようにする」とはどういう意味ですか?手動でアップロードしたことを意味しますか?または 'mvn deploy'を介してMavenビルドを使用しましたか? – khmarbaise
@khmarbaise私はjfrog.ioにログインしてそれらをアップロードし、私のブラウザを介して適切なレポにアーティファクトをアップロードします。私は前に 'mvn deploy'を使って試してみませんでした。 – nasukkin
@khmarbaise 'mvn deploy'を立ち上げてくれてありがとう。私は 'distributionManagement'設定でプロジェクトを設定し、それにスピンを与え、アーティファクトが正しく配備されました。だから、少なくとも私はブロックされていませんが、なぜwebappバージョンのデプロイメントで問題になるのだろうと思います。 – nasukkin