Maven:在子项目中获取父项目的根路径

时间:2019-07-19 10:48:22

标签: java maven

我有一个父项目和许多引用父项目的子项目。
在父级中,我有一个执行一些安全检查的配置文件。此配置文件需要一个我只想在父项目中拥有的配置文件和一个应该在子项目中的输出目录。

父pom.xml

<project ...>
    <groupId>com.examle.app</groupId>
    <artifactId>app-parent</artifactId>
    <version>0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <profiles>
        <profile>
            <id>security</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.owasp</groupId>
                        <artifactId>dependency-check-maven</artifactId>
                        <version>${dependency-check-maven.version}</version>
                        <configuration>
                            <failBuildOnCVSS>11</failBuildOnCVSS>
                            <format>ALL</format>
                            <suppressionFile>Parent_Root_Dir/owasp_suppress_false_positives.xml</suppressionFile>
                            <outputDirectory>Child_Root_Dir/owasp_output</outputDirectory>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>verify</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

子pom.xml

<project ...>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example.app</groupId>
        <artifactId>app-parent</artifactId>
        <version>0.1-SNAPSHOT</version>
    </parent>

    <artifactId>app-child1</artifactId>
    <version>0.1-SNAPSHOT</version>
    <name>Child1</name>

    .
    .
    .

</project>

我的文件夹结构如下

parent-project
    - pom.xml
child1-project
    - pom.xml
child2-project
    - pom.xml
.
.
.

我的父母比孩子的项目更有可能不在身边。

在父pom中,我已经设置了占位符 Parent_Root_Dir Child_Root_Dir ,但我不知道要使用哪个变量,或者是否确定甚至有可能。

安全检查通过mvn clean verify -P security在子项目中执行

我尝试了多个${maven.multiModuleProjectDirectory} ${project.basedir} ${parent.basedir}之类的Maven变量,但是当在子级中执行maven命令时,它们都引用了子级根路径项目。

我还尝试制作一个自定义变量<main.basedir>,然后将该变量 Parent_Root_Dir 放在父pom中。
子pom.xml改编

<properties>
    <main.basedir>${project.parent.basedir}</main.basedir>
</properties>

但这也不起作用。

有人知道如何获取父根路径吗?或对我可以进一步尝试的任何建议?将配置文件放到每个孩子中是最后的选择,但是我不愿意这样做,因为我至少需要一个配置文件才需要此工作流程。

1 个答案:

答案 0 :(得分:0)

我猜

build-helper:rootlocation

应该做到这一点:

https://www.mojohaus.org/build-helper-maven-plugin/rootlocation-mojo.html