Подтвердить что ты не робот

Могу ли я переместить папку "target" maven2 на другое устройство?

Я бы очень хотел, чтобы maven записывал папку "target" на другое устройство (ramdisk), которое я обычно рассматривал бы как другой путь. Есть ли какой-либо maven2-совместимый способ сделать это?

Я пытаюсь решить эту проблему на окнах, и предпочтительной будет стратегия, совместимая с maven.

4b9b3361

Ответ 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/