2008-11-22 8 views

Antwort

6

Sie die settings.xml verwenden können ALL Maven zu zwingen, baut auf dem lokalen Rechner läuft auch eine lokal installierte Maven-Proxy zu verwenden. Sich selbst und die Netzwerkzeit sparen.

<settings 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/settings-1.0.0.xsd"> 
    <profile> 
     <id>localcacheproxies</id> 

     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 

     <repositories> 
      <repository> 
       <id>localCacheProxy</id> 
       <url>http://my-local-proxy.com/maven-proxy</url> 
      </repository> 
     </repositories> 
    </profile> 
</profiles> 

Beachten Sie, dass die Namespace-Überschriften in dieser settings.xml auch ein anständiges intellisense auf andere Beispiele hier gepostet im Gegensatz gibt. (Erstellen Sie in Ihrem Home-Verzeichnis .m2 Ordner auf Windows, Linux und Mac und alle os'es)

1

Mit maven-dependency-plugin ist es möglich, Abhängigkeitskonflikte und zyklische Abhängigkeitsprobleme zu lösen.

zu Ihrem pom.xml hinzufügen:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
</plugin> 

Dann mvn Abhängigkeit führen: oder mvn Abhängigkeit lösen: build-classpath es zu testen.

Mehr über die Abhängigkeit Plugin: http://maven.apache.org/plugins/maven-dependency-plugin/howto.html

+0

Ich bin ziemlich sicher, dass Sie Ihre pom.xml dafür nicht bearbeiten müssen. – lindelof

+0

Indee, maven lädt automatisch jedes Plugin herunter, wenn der Name übereinstimmt. Allerdings ist es eine gute Übung, es dem Pom hinzuzufügen und speziell eine bestimmte Version (die ich vergessen habe) zu integrieren, um Überraschungen mit anderen Umgebungen später zu vermeiden. – Kuukage

+0

Abhängigkeit: Baum ist oft ein Lebensretter im Umgang mit mehreren Modulprojekten – sal

4

Werfen Sie einen Blick auf die Abhängigkeit: zu analysieren.

1
  1. Projekt Erbe
  2. Projekt Aggregation
  3. Montage: Montage
  4. Berichterstattung (findbugs, check, Klee, pmd, etc)
2

Manchmal haben Sie eine Datei, die einige enthalten muss Wert, der nur zur Erstellungszeit entdeckt werden kann. Vielleicht haben Sie eine Java-Klasse, die überprüft, ob der Testzeitraum abgelaufen ist, und Sie definieren diesen Zeitraum als "30 Tage nachdem dieser Build kompiliert wurde". Sie benötigen eine Möglichkeit, das aktuelle Datum oder eine andere Eigenschaft direkt in den Build zu injizieren.

Maven hat eine coole, versteckte Funktion namens Filterung (Documentation here). Mit Filtern können Sie Maven fragen nach Mustern in bestimmten Quelldateien zu suchen und ersetzen Sie sie mit einem gewissen Wert, und es ist so einfach wie diese zu aktivieren:

<build> 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     </resource> 
    </resources> 
    </build> 

Was können Sie in den Filter haften bleiben? Jede Umgebungsvariable, die meisten Werte in der Pom-Datei und Informationen über den Java-Compiler. Jetzt, wenn Sie Ihre Versionsnummer in Maven ändern, müssen Sie nicht nach Ihrer whatever.properties-Datei suchen und Ihre Version dort auch aktualisieren. Sie können es einfach in Maven ändern und fertig.

+0

"Maven hat eine coole, versteckte Funktion namens Filterung (Dokumentation hier)." Lol. Es ist versteckt und dokumentiert. –

+0

Versteckt und dokumentiert schließen sich nicht gegenseitig aus.Wenn Sie nicht wissen, dass es existiert, würden Sie nicht daran denken, die Dokumentation dafür zu überprüfen. So kann es nur entdeckt werden, und was wird entdeckt? Versteckte Dinge. Es ist wie beschriftete Blöcke in Java. Völlig dokumentiert. Weitgehend unbekannt. –