2017-05-03 5 views
1

ich eine externe Eigenschaften haben wollen Datei mit den Standorten der lokalen p2 Spiegel in Build verwendet, so etwas wie:Maven tycho Lasteigenschaftsdatei für p2 Repo-Standorte

mirror.location=/my/mirror/location 

ich dies möchte eine externe Datei sein, weil Ich möchte es in Maven und auch in anderen Skripten verwenden, und ich möchte vermeiden, den Speicherort in verschiedenen Sprachen zu duplizieren.

Ich fand heraus, dass ich Eigenschaften-Maven-Plugin verwenden sollte, das zu tun, wie

folgt
<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>${tycho.version}</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>read-project-properties</goal> 
      </goals> 
      <configuration> 
       <files> 
        <file>locations.properties</file> 
       </files> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

dann würde ich das gelesene Eigenschaft in der Repositories URL in der gleichen pom-Datei verwenden möge

<repositories> 
    <repository> 
     <id>eclipse_mirror</id> 
     <url>${mirror.location}/eclipse/</url> 
     <layout>p2</layout> 
    </repository> 
</repositories> 

Das Problem ist, dass Maven/Tycho die Repositorys gut vor jeder Phase des Lebenszyklus lädt und diesen Fehler druckt

[INFO] Computing target platform for MavenProject: ... [ERROR] Internal error: java.lang.RuntimeException: Invalid repository URL: ${mirror.location}/eclipse/: no protocol: ${mirror.location}/eclipse/ -> [Help 1] org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: Invalid repository URL: ${mirror.location}/eclipse/

Hinweise zur Verwendung einer Eigenschaftendatei zum Angeben von Repository-URLs?

Antwort

1

Das Problem ist, dass Maven/Tycho die Repositorys gut vor jeder Phase des Lebenszyklus lädt und druckt diesen Fehler

Diese Beobachtung ist richtig. Solange Bug 353889 nicht behoben ist, können Sie die nicht verwenden, um Eigenschaften zu bearbeiten, deren Wert Tycho während der Auflösung der Abhängigkeit benötigt.

Das gesagt, wissen Sie, dass Sie declare mirrors in Mavens setting.xml? Dies ist IMHO ein besserer Ort, um Einstellungen wie Spiegelungen zu deklarieren, da Sie dann sicherstellen können, dass Ihr Hauptbuild-Build (wie in der pom.xml angegeben) in sich abgeschlossen ist, d. H. Kein externes Wissen wie Systemeigenschaften erfordert.

Beachten Sie, dass Sie in Ihrer settings.xml Umgebungsvariablen wie ${env.HOME} verweisen können. Wenn Sie Ihre Variablen in eine Datei schreiben und die Shell sie vor dem Aufruf mvn aufrufen lassen, können Sie diese Datei auch an anderen Stellen wiederverwenden (obwohl es nicht 100% .properties Dateiformat ist).

+0

Vielen Dank für die Notizen. Ich habe die settings.xml-Datei verwendet, um das Repository zu spiegeln, und ich kann grundsätzlich tun, was ich will, nicht so sauber, wie ich gehofft hatte, aber gut genug für den Moment. Danke vielmals. – mhussein

Verwandte Themen