2016-05-09 4 views
2

Ich habe ein Eltern-Pom in einem Remote-Artifactory-Repository gespeichert. Das Eltern-Pom definiert ein <repositories>-Tag mit einigen Snapshot-Repositorys, die das übergeordnete Element meines Eltern-Pom enthalten.Maven: Herunterladen eines Eltern Pom aus dem Repository löscht Repositories Tag

Wenn ich jetzt versuche, ein Projekt mit meinem Eltern-Pom zu erstellen, findet Maven das Eltern-Pom korrekt in meinem Artifactory-Repository und lädt es herunter.

Während des Erstellungsprozesses werden meine Snapshot-Abhängigkeiten jedoch nicht gefunden, da das übergeordnete Pom, das möglicherweise in meinem lokalen Repository landet, das <repositories>-Tag nicht enthält.

Es funktioniert gut, wenn ich gerade mvn clean install im Verzeichnis des Eltern-Pom ausführen, um es lokal zu installieren, aber das Herunterladen aus dem Repository scheint das Tag loszuwerden.

Das scheint mir wie ein Fehler, aber vielleicht fehlt mir etwas und das ist beabsichtigt Verhalten? Wenn ja warum? Gibt es eine Workaround, die wir verwenden können, um die Repositories im Parent-Pom zu definieren?

Eltern-pom wie auf dem artifactory Server gespeichert:

<?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> 

Eltern-pom wie aus dem Repository heruntergeladen, wenn mein Kind Projekt Aufbau:

<?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> 

(sogar einige Leerzeichen auch dann, wenn die Tags verwendet werden)

+0

versucht löschen Sie es aus lokalen Repo und "mvn sauber installieren -U" off? –

+0

Ja, es lädt den Pom aus dem Artefakt, aber die Kompilierung des untergeordneten Projekts schlägt fehl, da die Spring-Boot-Abhängigkeiten nicht gefunden werden können. Ein Blick in das lokale Repo zeigt mir, dass das Tag wieder gelöscht wurde. Installieren Sie das Elternpom lokal und dann versuchen, das Kind zu kompilieren funktioniert gut, aber ist nicht wirklich praktisch. – mhlz

Antwort

2

Artifctory kann Repository-Tags unter bestimmten Umständen herausfiltern, siehe [RTFACT-5343] Artifactory removes the pom <repositories> tag when accessing from a virtual repository:

Dies ist eigentlich eine Funktion von Artifactory, um sicherzustellen, dass Maven nur gegen Ihren Artifactory-Server funktioniert.

Sobald Maven auf das Repository-Tag innerhalb des POM stoßen, versuchen Sie, die Abhängigkeiten von diesen Repositories herunterzuladen, indem Sie Ihren Repository-Manager abkürzen. Die Datei wird selbst gespeichert und nicht im Repository berührt.

Sie können es drehen in der virtuellen Repository Config Panel http://wiki.jfrog.org/confluence/display/RTF/Virtual+Repositories

Verwandte Themen