You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何全局修改Maven默认target目录,统一指定所有项目构建输出路径

统一修改所有Maven项目构建输出目录的方案

嘿,这个需求我之前也折腾过,给你几个靠谱的方案,分分钟搞定所有Maven项目统一输出目录的问题!

方案1:全局配置(所有Maven项目自动生效)

这个方案一劳永逸,改完之后你本地所有Maven项目的构建输出都会自动走指定目录。

  1. 找到你的Maven配置文件settings.xml,一般在${MAVEN_HOME}/conf目录下,或者用户目录的.m2/settings.xml(后者优先级更高)。
  2. <settings>标签里添加<profiles>配置,指定全局的构建输出目录:
<settings>
  <profiles>
    <profile>
      <id>custom-build-dir</id>
      <properties>
        <!-- 这里配置你想要的统一输出路径,比如你说的temp/${项目名}/target -->
        <project.build.directory>${user.dir}/../temp/${project.artifactId}/target</project.build.directory>
      </properties>
    </profile>
  </profiles>
  <!-- 激活这个profile,让它默认生效 -->
  <activeProfiles>
    <activeProfile>custom-build-dir</activeProfile>
  </activeProfiles>
</settings>

解释一下:

  • ${user.dir}是当前项目的根目录路径,../temp就是项目同级的temp文件夹
  • ${project.artifactId}是每个项目的artifactId,这样每个项目的输出会自动分到temp/P1/targettemp/P2/target这种路径里

方案2:父POM统一管理(适合团队/自有项目)

如果不想影响所有项目(比如有些第三方项目你不想改输出目录),可以用父POM来统一配置,让自己的项目都继承这个父POM:

  1. 创建一个父POM项目,在它的<properties>里定义构建目录:
<project>
  <groupId>com.your.group</groupId>
  <artifactId>parent-pom</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>
  
  <properties>
    <project.build.directory>${user.dir}/../temp/${project.artifactId}/target</project.build.directory>
  </properties>
</project>
  1. 让你的P1、P2等项目继承这个父POM,在子项目的pom.xml里添加:
<parent>
  <groupId>com.your.group</groupId>
  <artifactId>parent-pom</artifactId>
  <version>1.0.0</version>
</parent>

这样只有继承了这个父POM的项目才会用自定义的输出目录,第三方项目不受影响。

方案3:命令行临时指定(单次生效)

要是只是偶尔临时改一次输出目录,不想动配置文件,直接在构建命令里加参数就行:

mvn clean install -Dproject.build.directory=../temp/${项目名}/target

比如给P1项目构建时,就用:

mvn clean install -Dproject.build.directory=../temp/P1/target

小提示

  • 如果你想要所有项目的输出都到同一个根目录下(比如/temp),可以把路径写成/temp/${project.artifactId}/target(注意是绝对路径)
  • 改完配置后,记得先执行mvn clean清理旧的target目录,避免缓存问题

内容的提问来源于stack exchange,提问作者WebComer

火山引擎 最新活动