【发布时间】:2021-10-28 16:20:30
【问题描述】:
我在 C:\workspaces\parent-project\pom.xml 中有一个 JDK11 Maven 父项目和一个 POM 文件 这是我使用“mvn clean install”运行的 POM 文件。 我还有其他儿童项目。 在这个父 POM 中,我需要访问它所在的目录。
我在父 POM 中有这个插件:
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<version>2.16.0</version>
<configuration>
<configFile>${project.basedir}/java-formatter-configuration.xml</configFile>
<overrideConfigCompilerVersion>true</overrideConfigCompilerVersion>
<compilerSource>11</compilerSource>
<compilerCompliance>11</compilerCompliance>
<compilerTargetPlatform>11</compilerTargetPlatform>
<lineEnding>CRLF</lineEnding>
<encoding>UTF-8</encoding>
</configuration>
<executions>
<execution>
<goals>
<goal>format</goal>
</goals>
</execution>
</executions>
</plugin>
不幸的是,${project.basedir} 返回子项目的目录,因为它们是 1-by-1 构建的。 Tomcat 具有指向 Tomcat 安装目录的变量 ${CATALINA_BASE}。我可以在父 POM 中做同样的事情,以便我可以代表父 POM 所在的目录吗?意思是,你知道我可以使用哪个 Maven 变量来访问目录 C:\工作区\父项目? 我必须在每个项目中复制这个格式化程序 XML。我只想在父文件夹中有一个格式化程序 XML。 谢谢
【问题讨论】:
-
如果 Maven 使用你父项目的安装版本,那么没有目录。已安装的工件以 JAR 形式存储在您的主目录
.m2/repository/...中。如果要使用项目目录,请使用<relativePath>并在每个子项目中指定父项目的相对路径。见stackoverflow.com/questions/35608981/… -
谢谢罗伯特。我用更多信息更新了问题,但如果没有更简单的解决方案,我会尝试了解如何使用
-
也许您应该写下您认为需要对父项目进行文件系统访问的原因,以便社区可以帮助您找到不需要直接访问父项目的不同方式。
-
因为我有 86 个项目并且我没有复制/pste 相同的 java-formatter-configuration.xml(由 Maven 插件使用),这似乎不是一个好主意。我希望将这个 XML 文件放在一个位置,即在父项目的目录中,这样当每个
的 POM 执行时,插件可以获得 XML 文件的路径。一站式服务