我试图在执行 Maven 构建时将许可证文件添加到我的所有 jar 中。我有每个类文件的许可证,但我希望将 License.txt 添加到每个 jar 中的每个 META-INF 文件夹
我的项目有一个主 pom,其中有六个模块,然后这些模块有自己的模块,并最终到达生成 /target/<.jar-file> 的项目。构建和类级别许可证正在运行,我只是想将物理 License.txt 添加到 META-INF 文件夹中。
我的文件存储(相对于主 POM)在 /src/resources/src-license.txt 中。我确实需要一种自动化方法来确保如果/当许可证更改时,我不必更新 50 个文件,我只需更新一个文件,然后将其复制到其他位置。
我尝试过使用
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src/resources</directory>
<targetPath>/META-INF</targetPath>
<includes>
<include>src-license.txt</include>
</includes>
</resource>
</resources>
....
</build>
但这似乎并不能解决问题。我还尝试了一些输出路径的替代方案,例如 ${project.build.outputDirectory}/META-INF 或 */META_INF,也无济于事。有谁对如何实现这一目标有一些经验?谢谢
另外,我使用 maven-license-plugin 来确保每个类文件都粘贴了许可证信息,并且按预期运行。但同样,在类文件内,我正在每个 /META-INF/ 中寻找外部 .txt 文件
使用父relativePath 中的资源至少很困难(如果您有复杂的目录结构怎么办?)。
一种简单而干净的方法是创建一个包含 src-license.txt 文件的单独模块。然后使其成为模块的依赖项并在目标/类内部的生成资源阶段解压缩它(依赖项:解包依赖项)。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-license</id>
<phase>generate-resources</phase>
<goals><goal>unpack</goal></goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.acme</groupId>
<artifactId>com.acme.license</artifactId>
<version>${project.version}</version>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)