【发布时间】:2009-06-17 06:28:40
【问题描述】:
我真的很想让 maven 将“目标”文件夹写入不同的设备(ramdisk),我通常认为这是不同的路径。是否有任何符合 maven2 的方法来做到这一点?
我正在尝试在 Windows 上解决此问题,并且首选符合 maven 的策略。
【问题讨论】:
我真的很想让 maven 将“目标”文件夹写入不同的设备(ramdisk),我通常认为这是不同的路径。是否有任何符合 maven2 的方法来做到这一点?
我正在尝试在 Windows 上解决此问题,并且首选符合 maven 的策略。
【问题讨论】:
如果您碰巧所有项目都扩展了公司父 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 中。
【讨论】:
其实 Maven 并不像大家想的那样受限,所有的 POM 都是由一个 Super POM 扩展而来的,其中定义了目标文件夹的名称
<build>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<finalName>${artifactId}-${version}</finalName>
<testOutputDirectory>target/test-classes</testOutputDirectory>
.
.
.
</build>
当然,你可以用你想要的任何值覆盖,所以继续在你的 POM 中更改
【讨论】:
以防万一您想为自己的 Maven3 修复此问题而不涉及项目中的任何内容,请找到文件:
$MAVEN_HOME/lib/maven-model-builder-3.X.Y.jar
并在里面更新super-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/ 下
【讨论】: