Java maven许可插件:为所有子级使用parentPom许可

Java maven许可插件:为所有子级使用parentPom许可,java,maven,Java,Maven,我正在尝试使用maven许可证插件获取多模块项目的许可证和标题信息。我希望避免使用多个许可证副本,并尽可能使pom文件易于维护。为此,我将插件信息放入元素中的parentPom中。我完全配置了插件,并将必要的文件放入父项目中。因此,在家长中,我有: <pluginManagement> <plugins> <plugin> <groupId>org.co

我正在尝试使用maven许可证插件获取多模块项目的许可证和标题信息。我希望避免使用多个许可证副本,并尽可能使pom文件易于维护。为此,我将插件信息放入元素中的parentPom中。我完全配置了插件,并将必要的文件放入父项目中。因此,在家长中,我有:

<pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <version>1.6</version>
                    <configuration>
                        <licenseName>my_license</licenseName>
                        <licenseResolver>${project.baseUri}/src/license</licenseResolver>
                    </configuration>
                    <executions>
                        <execution>
                            <id>first</id>
                            <goals>
                                <goal>update-file-header</goal>
                            </goals>
                            <phase>process-sources</phase>
                        </execution>
                    </executions>
                </plugin>
</pluginManagement>

org.codehaus.mojo
许可maven插件
1.6
我的驾照
${project.baseUri}/src/license
第一
更新文件头
过程源
然后,我将对该插件的引用放入一个子pom文件中:

<plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>license-maven-plugin</artifactId>
            </plugin>
</plugins>

org.codehaus.mojo
许可maven插件

但子级无法生成,因为它尝试沿子级的项目路径而不是父级的项目路径查找licenses.properties文件。如何让子项目在父项目中查找licenses.properties?

解决方案是使用classpath选项,如下所述:

从1.3版开始使用classpath中的许可证解析程序 可以从类路径使用许可证解析程序(表示包含在 jar或插件依赖项的任何依赖项)

只需在插件配置中使用classpath://协议

假设您在工件中有一个许可证解析程序 com.my:extralicensesolvers:1.0在foo.bar包中

下一个示例演示如何从类路径使用此许可证解析程序:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>license-maven-plugin</artifactId>
  <version>1.6</version>
  <configuration>
      <licenseName>my_license</licenseName>
      <licenseResolver>classpath://foo/bar</licenseResolver>
  </configuration>
  <executions>
      <execution>
          <goals>
              <goal>update-file-header</goal>
          </goals>
          <phase>process-sources</phase>
      </execution>
  </executions>
  <dependencies>
      <dependency>
          <groupId>com.my</groupId>
          <artifactId>extraLicenseResolvers</artifactId>
          <version>1.0</version>
      </dependency>
  </dependencies>
</plugin>

org.codehaus.mojo
许可maven插件
1.6
我的驾照
classpath://foo/bar
更新文件头
过程源
com.my
外部许可证解析程序
1
关于这一点,不明显的是,您确实需要一个包含许可证文件的单独包。似乎没有办法将这些信息保存在父pom项目中


最后,这个解决方案成功了,我们能够为所有pom子文件使用的许可证信息提供一个单一位置。

Yo还可以使用外部许可证存储库,例如通过http协议访问。