Могу ли я переместить maven2 "target" папку на другое устройство? - PullRequest
20 голосов
/ 17 июня 2009

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

Я пытаюсь решить эту проблему в Windows, и предпочтительнее использовать maven-совместимую стратегию.

Ответы [ 3 ]

25 голосов
/ 17 июня 2009

Если у вас есть все ваши проекты, расширяющие корпоративный 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.

6 голосов
/ 17 июня 2009

На самом деле Maven не является ограниченным , как все думают, все POM расширены на один Super POM , в котором определено имя целевой папки

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

Конечно, вы можете перезаписать любое значение, которое хотите, поэтому просто измените элемент (и другие связанные элементы) в вашем POM

0 голосов
/ 31 июля 2013

на всякий случай, если вы хотите исправить это для вашего собственного 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 /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...