【问题标题】:How to access POM file directory inside POM file using ${}如何使用 ${} 访问 POM 文件中的 POM 文件目录
【发布时间】: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/... 中。如果要使用项目目录,请使用&lt;relativePath&gt; 并在每个子项目中指定父项目的相对路径。见stackoverflow.com/questions/35608981/…
  • 谢谢罗伯特。我用更多信息更新了问题,但如果没有更简单的解决方案,我会尝试了解如何使用
  • 也许您应该写下您认为需要对父项目进行文件系统访问的原因,以便社区可以帮助您找到不需要直接访问父项目的不同方式。
  • 因为我有 86 个项目并且我没有复制/pste 相同的 java-formatter-configuration.xml(由 Maven 插件使用),这似乎不是一个好主意。我希望将这个 XML 文件放在一个位置,即在父项目的目录中,这样当每个 的 POM 执行时,插件可以获得 XML 文件的路径。一站式服务

标签: maven-3 java-11


【解决方案1】:

我建议阅读formatter-maven-plugin 的文档,因为它支持您不需要开箱即用的文件系统访问权限的配置设置。

【讨论】:

  • 非常感谢khmarbaise。现在 formatter.xml 只在一个地方,而不是 86。它可以工作!
猜你喜欢
  • 1970-01-01
  • 2017-01-29
  • 1970-01-01
  • 2016-06-06
  • 2018-08-09
  • 2014-04-06
  • 1970-01-01
  • 2013-09-09
  • 2018-05-27
相关资源
最近更新 更多