22 Stimmen

Kann ich den maven2 "target" Ordner auf ein anderes Gerät verschieben?

Ich würde Maven gerne dazu bringen, den "Ziel"-Ordner auf ein anderes Gerät (Ramdisk) zu schreiben, was ich normalerweise als einen anderen Pfad betrachten würde. Gibt es eine Maven2-konforme Möglichkeit, dies zu tun?

Ich versuche, dieses Problem unter Windows zu lösen, und eine Maven-kompatible Strategie wäre wünschenswert.

25voto

Brian Laframboise Punkte 5484

Wenn Sie zufällig alle Ihre Projekte haben, die ein gemeinsames übergeordnetes Pom erweitern, dann können Sie versuchen, noch eine weitere Ebene der Indirektion wie folgt hinzuzufügen:

Corporate POM:

<build>
  <directory>${my.build.directory}</directory>
</build>
<properties>
  <!-- sensible default -->
  <my.build.directory>target</my.build.directory>
</properties>

In Ihrer settings.xml:

<properties>
  <!-- Personal overridden value, perhaps profile-specific -->
  <my.build.directory>/mnt/other/device/${project.groupId}-${project.artifactId}/target</my.build.directory>
</properties>

Wenn die lokale POM-Definition Vorrang vor der settings.xml-Definition hat, dann könnten Sie versuchen, den Standardwert wegzulassen, um den Preis, dass jede Maven-Instanz unter Ihrer Kontrolle (Entwickler, Build-Maschinen, etc.) ${my.build.directory} in ihrer settings.xml angeben muss.

6voto

victor hugo Punkte 34636

Eigentlich ist Maven nicht so Zwangsweise wie jeder denkt, sind alle POMs von einem erweitert Super POM in dem der Name des Zielordners definiert ist

<build>
  <directory>target</directory>
  <outputDirectory>target/classes</outputDirectory>
  <finalName>${artifactId}-${version}</finalName>
  <testOutputDirectory>target/test-classes</testOutputDirectory>
 .
 .
 .
</build>

Natürlich können Sie jeden beliebigen Wert überschreiben, also ändern Sie einfach das <directory />-Element (und andere verwandte Elemente) in Ihrem POM

0voto

jdevelop Punkte 11868

Nur für den Fall, dass Sie dies für Ihr eigenes Maven3 beheben und nichts am Projekt ändern wollen, finden Sie die Datei:

$MAVEN_HOME/lib/maven-model-builder-3.X.Y.jar

und aktualisieren Sie super-pom in

org/apache/maven/model/pom-4.0.0.xml

wechselnde Leitung

<directory>${project.basedir}/target</directory>

in

<directory>/tmp/maven2/${project.groupId}-${project.artifactId}/target</directory>

Wenn Sie also das nächste Mal ein Maven-Projekt bauen, werden alle Klassen unter /tmp/ abgelegt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X