我真的想让maven将“target”文件夹写入另一个设备(ramdisk),我通常认为这是一个不同的路径。有没有符合maven2标准的方法呢?
我试图在Windows上解决这个问题,并且首选符合maven的策略。
答案 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 /
下