需要创建Maven插件或“某种包装器”或我应该使用父pom

时间:2018-01-08 16:19:51

标签: maven spring-boot maven-3 maven-plugin parent-pom

我们在几个(10+)项目中使用frontend-maven-plugin。 这些项目与我们自己的CMS一起构建。这些项目在pom中使用特定的“父”,例如:

<parent>
    <groupId>nl.companyname</groupId>
    <artifactId>companyname-corporate-pom</artifactId>
    <version>2.0.13</version>
</parent>

在这个'企业pom'中,我们有一些预定义的配置和'插件管理',例如:

<project.frontendmavenplugin.version>1.3</project.frontendmavenplugin.version>
    <project.frontendmavenplugin.workingDirectory>./</project.frontendmavenplugin.workingDirectory>

    <project.node.downloadRoot>http://nodejs.COMPANYURL.nl/dist/</project.node.downloadRoot>
    <project.node.version>v6.9.1</project.node.version>

    <project.yarn.version>v0.17.9</project.yarn.version>
    <project.yarn.downloadRoot>http://yarnpkg.COMPANYURL.nl/</project.yarn.downloadRoot>
    <project.npm.registryUrl>http://nexus.COMPANYURL.nl/content/groups/npm-all/</project.npm.registryUrl>

<build>
    <pluginManagement>
        <!-- Generic configuration for plugins used by (almost) all projects. -->
        <plugins>
<plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <version>${project.frontendmavenplugin.version}</version>
                <executions>

                    <execution>
                        <id>install node and yarn</id>
                        <goals>
                            <goal>install-node-and-yarn</goal>
                        </goals>
                        <phase>generate-resources</phase>
                        <configuration>
                            <workingDirectory>${project.frontendmavenplugin.workingDirectory}</workingDirectory>
                            <nodeVersion>${project.node.version}</nodeVersion>
                            <nodeDownloadRoot>${project.node.downloadRoot}</nodeDownloadRoot>
                            <yarnVersion>${project.yarn.version}</yarnVersion>
                            <yarnDownloadRoot>${project.yarn.downloadRoot}</yarnDownloadRoot>
                        </configuration>
                    </execution> 

etc.

这样我们就不必复制/管理每个项目中的所有配置。 这非常有效。

但是:我们现在也在创建越来越多的新应用程序(基于Spring Boot),这些应用程序独立于我们的CMS而且我们不能使用这个'父pom',因为Spring Boot有它自己的(spring-boot-starter-) parent)和我们的'corporate pom'还包含非常具体的插件/配置,仅适用于我们的CMS(我们不包括在这些Spring Boot项目中)。

所以我需要的是前端-maven-plugin配置更加'独立'(可能在未来更多'平台'独立配置/插件)。据我所知,不可能有超过1个父母,所以还有其他选择吗? 我想创建一个新的'companyname-frontend-maven-plugin',它包含PluginManagement作为Frontend Maven插件的所有(可扩展)配置。但是我不知道这是否会起作用,而且在git / Jenkins等中创建和维护它也是很多工作。 我还有其他选择吗?

谢谢大家的时间!

1 个答案:

答案 0 :(得分:0)

也许你可以使用个人资料。 您可以创建一个继承自spring-boot-starter-parent的“公司”pom,它包含一个maven配置文件,其中包含cms所需的所有属性和插件。因此,当您在CMS上工作时,您将启用“cms-profile”。

亲切的问候。