2016-05-09 20 views
2

親Art-pomがリモートArtifactoryリポジトリに保存されています。親-pomは、私の親-pomの親を含むいくつかのスナップショットリポジトリを持つ<repositories>タグを定義します。Maven:リポジトリから親pomをダウンロードすると、リポジトリタグが削除されます

私は今、私の親POMを使用してプロジェクトを構築しようとすると、mavenは私のArtifactoryリポジトリ内の親POMを正しく見つけてダウンロードします。

最終的に自分のローカルリポジトリに終わる親POMに<repositories>タグがないため、ビルドプロセス中にスナップショットの依存関係が見つからない場合があります。

ローカルにインストールするには、mvn clean installをparent-pomのディレクトリに実行しても問題ありませんが、リポジトリからダウンロードするとタグを取り除いたようです。

これは私にはバグのようですが、多分私は何かを見逃しており、これは意図された動作ですか?もしそうなら、なぜですか? parent-pomにリポジトリを定義できるようにするための回避策がありますか? 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> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.0.M2</version> 
    </parent> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.example</groupId> 
    <artifactId>example-parent</artifactId> 

    <version>1.0.1</version> 

    <packaging>pom</packaging> 

    <name>example-parent</name> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>com.example</groupId> 
       <artifactId>example-project</artifactId> 
       <version>0.0.1-SNAPSHOT</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <repositories> 
     <repository> 
      <id>spring-snapshots</id> 
      <name>Spring Snapshots</name> 
      <url>https://repo.spring.io/snapshot</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </repository> 
     <repository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>https://repo.spring.io/milestone</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-snapshots</id> 
      <name>Spring Snapshots</name> 
      <url>https://repo.spring.io/snapshot</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </pluginRepository> 
     <pluginRepository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>https://repo.spring.io/milestone</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </pluginRepository> 
    </pluginRepositories> 

    <distributionManagement> 
     <repository> 
      <id>example-releases</id> 
      <name>example-releases</name> 
      <url>http://com.example/blabla</url> 
     </repository> 
     <snapshotRepository> 
      <id>example-snapshots</id> 
      <name>example-snapshots</name> 
      <url>http://com.example/blabla</url> 
     </snapshotRepository> 
    </distributionManagement> 

</project> 

親-ポンポン私の子プロジェクト構築時にリポジトリからダウンロードしたとして:(でもタグをいくつかの空白を含む

<?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> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.0.M2</version> 
    </parent> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.example</groupId> 
    <artifactId>example-parent</artifactId> 

    <version>1.0.1</version> 

    <packaging>pom</packaging> 

    <name>example-parent</name> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>com.example</groupId> 
       <artifactId>example-project</artifactId> 
       <version>0.0.1-SNAPSHOT</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 





    <distributionManagement> 
     <repository> 
      <id>example-releases</id> 
      <name>example-releases</name> 
      <url>http://com.example/blabla</url> 
     </repository> 
     <snapshotRepository> 
      <id>example-snapshots</id> 
      <name>example-snapshots</name> 
      <url>http://com.example/blabla</url> 
     </snapshotRepository> 
    </distributionManagement> 

</project> 

を以前に使用されていた)

+0

は、ローカルレポや「-UをクリーンインストールMVN」からそれを削除しようとした仮想リポジトリの設定パネルでそれをオフにすることができますか? –

+0

はい、artifactoryからpomをダウンロードしますが、スプリングブートの依存関係が見つからないため、子プロジェクトのコンパイルに失敗します。後でローカルリポジトリを見ると、タグが再び削除されたことがわかります。 親pomをローカルにインストールしてから、コンパイルしようとすると問題なく動作しますが、実用的ではありません。 – mhlz

答えて

2

特定の状況では、Artifctoryがリポジトリタグを除外することがあります。[RTFACT-5343] Artifactory removes the pom <repositories> tag when accessing from a virtual repository

これは、実際には、Artifactoryの機能であり、Artifactoryサーバーに対してのみ動作することを確認します。

mavenがpom内のリポジトリタグに遭遇すると、このリポジトリから依存関係をダウンロードして、リポジトリマネージャをショートカットします。それ自身のファイルは、リポジトリ内で触れられていない状態で保存されます。

あなたはhttp://wiki.jfrog.org/confluence/display/RTF/Virtual+Repositories

関連する問題