我可以将maven2“target”文件夹移动到另一台设备吗?

时间:2009-06-17 06:28:41

标签: java maven-2

我真的想让maven将“target”文件夹写入另一个设备(ramdisk),我通常认为这是一个不同的路径。有没有符合maven2标准的方法呢?

我试图在Windows上解决这个问题,并且首选符合maven的策略。

3 个答案:

答案 0 :(得分:25)

如果您碰巧让所有项目扩展到公司父母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中。

答案 1 :(得分:6)

实际上,Maven并不像每个人所想的那样约束,所有的POM都扩展为一个Super POM,其中定义了目标文件夹的名称

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

当然,您可以使用您想要的任何值进行覆盖,因此请继续更改&lt; directory /&gt; POM中的元素(和其他相关元素)

答案 2 :(得分:0)

如果您想为自己的Maven3修复此问题而不触及项目中的任何内容,请找到文件:

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

并更新

内的超级pom

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 /