Могу ли я переместить папку "target" maven2 на другое устройство?
Я бы очень хотел, чтобы maven записывал папку "target" на другое устройство (ramdisk), которое я обычно рассматривал бы как другой путь. Есть ли какой-либо maven2-совместимый способ сделать это?
Я пытаюсь решить эту проблему на окнах, и предпочтительной будет стратегия, совместимая с maven.
Ответы
Ответ 1
Если у вас есть все ваши проекты, расширяющие корпоративный родительский pom, тогда вы можете попробовать добавить еще один слой указателя следующим образом:
Корпоративный POM:
<build>
<directory>${my.build.directory}</directory>
</build>
<properties>
<!-- sensible default -->
<my.build.directory>target</my.build.directory>
</properties>
В ваших settings.xml:
<properties>
<!-- Personal overridden value, perhaps profile-specific -->
<my.build.directory>/mnt/other/device/${project.groupId}-${project.artifactId}/target</my.build.directory>
</properties>
Если локальное определение POM имеет приоритет над определением settings.xml, вы можете попробовать отказаться от значения по умолчанию за счет того, что каждый экземпляр Maven в вашем элементе управления (разработчики, машины сборки и т.д.) указывают ${my.build.directory} в его settings.xml.
Ответ 2
Собственно, Maven не так стесен, как все думают, все POM расширены от одного Super POM, в котором определено имя целевая папка
<build>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<finalName>${artifactId}-${version}</finalName>
<testOutputDirectory>target/test-classes</testOutputDirectory>
.
.
.
</build>
Конечно, вы можете перезаписать любое значение, которое вы хотите, поэтому просто перейдите и измените каталог < directory/ > элемент (и другие связанные элементы) в вашем POM
Ответ 3
на всякий случай, если вы хотите исправить это для своего собственного Maven3 и ничего не трогать в проекте, найдите файл:
$MAVEN_HOME/lib/maven-model-builder-3.X.Y.jar
и обновить супер-пом внутри
org/apache/maven/model/pom-4.0.0.xml
меняющаяся линия
<directory>${project.basedir}/target</directory>
в
<directory>/tmp/maven2/${project.groupId}-${project.artifactId}/target</directory>
так что в следующий раз, когда вы создадите любой проект maven - он поместит все классы под/tmp/