我猜想要改变maven版本的输出目标目录。 正如我所看到的更多人问approximately same question,我稍后改写了一下:
我希望所有m2项目生成的文件都可以使用 特定的,不同于默认的构建目录。例如,如果我 有项目P1和P2,默认构建目录是P1 / target 和P2 /目标。我想把它改成P1 / target之类的东西 和P2 / target / 甚至更好 - temp / P1 / target 和/ temp / P2 / target 。
我不想修改每个pom.xml。我想这样做 全球,我的环境特定设置。
看起来有几个maven插件基于它们的构建目录路径 on" project.build.directory"所以我试过......" m2 - Dproject.build.directory = / temp / target package"但这没有效果。
是否有人知道任何有效的方法 - 通过 settings.xml或通过-D或其他一些全局方法?
答案 0 :(得分:0)
如果您找到-D
解决方案,那么很容易将其设为全局。
只需使用MAVEN_OPTS
环境变量即可。 Maven会选择它并将其应用于每个版本。
在Windows上(或使用UI设置)
set MAVEN_OPTS=-DsomeSystemProp=value
或在Linux上
export MAVEN_OPTS=-DsomeSystemProp=value
来源:https://maven.apache.org/configure.html
注意1: .mvn
目录中的.m2
目录也是一个选项,但我从未在用户级别使用此目录。
注2:具有约定优于配置的东西往往会忘记配置部分。我已经看到硬编码的target
目录作为插件和pom.xml
文件中的输出目录。请注意这一点,如果某些行为很有趣,请尝试使用标准输出目录进行构建。
答案 1 :(得分:0)
在一个旧项目中,我们使用ramdisk加快了构建速度。
我必须将M2_RAMDISK
环境变量设置为我的ramdisk,其余的都由我来处理。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>poc</groupId>
<artifactId>ramdisk</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<directory>${override.project.build.directory}</directory>
</build>
<properties>
<override.project.build.directory>target</override.project.build.directory>
</properties>
<profiles>
<profile>
<id>ramdisk</id>
<activation>
<property>
<name>env.M2_RAMDISK</name>
</property>
</activation>
<properties>
<override.project.build.directory>${env.M2_RAMDISK}/${project.groupId}/${project.artifactId}/${project.version}</override.project.build.directory>
</properties>
</profile>
</profiles>
</project>
覆盖构建的输出目录是有风险的业务,因为某些工具仅使用target
目录而不是属性值。