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

kro*_*old 21 java maven-2

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

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

Bri*_*ise 25

如果您碰巧让所有项目扩展到公司父pom,那么您可以尝试添加Yet Another Layer of Indirection,如下所示:

企业POM:

<build>
  <directory>${my.build.directory}</directory>
</build>
<properties>
  <!-- sensible default -->
  <my.build.directory>target</my.build.directory>
</properties>
Run Code Online (Sandbox Code Playgroud)

在您的settings.xml中:

<properties>
  <!-- Personal overridden value, perhaps profile-specific -->
  <my.build.directory>/mnt/other/device/${project.groupId}-${project.artifactId}/target</my.build.directory>
</properties>
Run Code Online (Sandbox Code Playgroud)

如果本地POM定义优先于settings.xml定义,那么您可以尝试省略默认值,代价是让控件中的每个Maven实例(开发人员,构建机器等)指定$ {my.build.directory}在其settings.xml中.

  • 这不会使每个模块的构建目录相同,而不是每个模块一个目录吗?因此,如果您执行"mvn install"(而不是"mvn clean install"),所有以前编译过的模块中的文件最终都会出现在结果中(jar)?也许您可以通过执行<my.build.directory>/mnt/other/device/$ {artifactId} -target </my.build.directory>来解决这个问题.(未经测试!) (2认同)

vic*_*ugo 6

实际上,Maven没有像每个人想的那样受到限制,所有的POM都扩展了一个Super POM,其中定义了目标文件夹的名称

<build>
  <directory>target</directory>
  <outputDirectory>target/classes</outputDirectory>
  <finalName>${artifactId}-${version}</finalName>
  <testOutputDirectory>target/test-classes</testOutputDirectory>
 .
 .
 .
</build>
Run Code Online (Sandbox Code Playgroud)

当然你可以用你想要的任何值覆盖,所以只需要继续更改POM中的<directory />元素(以及其他相关元素)