生成maven工件路径

时间:2018-04-25 02:29:57

标签: maven

Maven install知道构建生成的所有工件,并将它们本地推送。

  

将项目的主要工件以及生命周期中其他插件附加的任何其他工件安装到本地存储库。

帮助插件可能支持这一点,但不确定正确的表达式

EventId  EquipApprovedDate  EquipCalDueDate  ThemeColor  remaining  total
1        2018-04-17         2018-05-31       green       36         44 
2        2018-04-11         2018-04-27       red         2          16 
3        2020-04-20         2020-05-28       green       764        38 
4        2018-04-11         2018-05-15       orange      20         34 
8        2019-04-20         2019-05-31       green       401        41 

有没有办法从maven命令获取路径列表?

我想生成一个特定工件列表,以便在构建过程中保留为工件,而不会发布到maven存储库。

1 个答案:

答案 0 :(得分:0)

默认情况下,Maven存储库中的工件路径将遵循以下公式:

  • groupId使用句号作为分隔符分解为文件夹,然后artifactIdversion构成最后两个文件夹
  • 工件的文件名由artifactIdversion组成,类型由packaging
  • 定义

所以,假设您有一个主模块pom.xml的多模块项目:

<groupId>com.foobar.my.business</group>
<artifactId>myApp</artifactId>
<version>1.0-SNAPSHOT</version>

它有两个子模块,第一个是创建REST端点的Web模块:

<parent>
  <groupId>com.foobar.my.business</group>
  <artifactId>myApp</artifactId>
  <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>myApp-web</artifactId>
<packaging>war</packaging>

第二个是持久层:

<parent>
  <groupId>com.foobar.my.business</group>
  <artifactId>myApp</artifactId>
  <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>myApp-persistence</artifactId>
<packaging>jar</packaging>

假设您的本地存储库来自~/.m2/repository。然后,您的工件将保存在本地存储库中:

  • 〜/ .m2目录/库/ COM / foobar的/我的/商务/ MYAPP / 1.0-SNAPSHOT / MYAPP-1.0-SNAPSHOT.pom
  • 〜/ .m2目录/库/ COM / foobar的/我的/商务/ MYAPP的Web / 1.0-SNAPSHOT / MYAPP的web-1.0-SNAPSHOT.pom
  • 〜/ .m2目录/库/ COM / foobar的/我的/商务/ MYAPP的Web / 1.0-SNAPSHOT / MYAPP的web-1.0-SNAPSHOT.war
  • 〜/ .m2目录/库/ COM / foobar的/我/商业/ MyApp的余辉/ 1.0-SNAPSHOT / MyApp的余辉-1.0-SNAPSHOT.pom
  • 〜/ .m2目录/库/ COM / foobar的/我/商业/ MyApp的余辉/ 1.0-SNAPSHOT / MyApp的余辉-1.0-SNAPSHOT.jar

工件的最终构建名称和本地存储库位置可以修改。但您可以使用以下表达式来检查这些:

  • ${settings.localRepository}将返回本地存储库的路径。
  • ${project.build.finalName}将返回最终构建工件名称。

要以几乎正确的格式获取此列表,您可以运行:

  • 在Windows上mvn -q exec:exec -Dexec.executable="cmd" -Dexec.args="/C echo ${settings.localRepository}\${project.groupId}\${project.artifactId}\${project.version}\${project.build.finalName}.${project.packaging}"
  • 关于POSIX mvn -q exec:exec -Dexec.executable='echo' -Dexec.args='${settings.localRepository}/${project.groupId}/${project.artifactId}/${project.version}/${project.build.finalName}.${project.packaging}'

然后你只需要修复groupId中的句号。

还有一个mvn dependency:build-classpath命令,它将显示文件系统上每个依赖项的位置,有时可以派上用场。