gpt4 book ai didi

java - Maven - 添加可在 Java 内部访问的校验和另一种方法

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:23 25 4
gpt4 key购买 nike

仍然是 Maven 的伎俩。我的目标是一样的:

应用程序提供:

  1. JAR 形式 maven-assemble-plugin
    • checksum-maven-plugin 从 WAR 生成的内部存储的校验和文件
  2. 来自 maven-war-plugin 的 WAR 文件

经过一些改进,我完成了 2 个模块的项目。我看到两个选项:

1. Option:
parent
- module 1 for WAR (+ checksum-maven-plugin)
- module 2 for JAR (with dependancy)
2. Option:
parent
- module 1 for WAR
- module 2 for JAR (with dependency to WAR + checksum-maven-plugin)

我选择了选项 1。我的 parent :

modules -> deploy-webapp
-> deploy
plugin -> compiler

我的模块1:

set parent -> ...
plugin -> maven-war-plugin -> execution -> compile -> war
plugin -> checksum-maven-plugin -> execution -> package -> files

我的模块2:

set parent -> ...
plugin -> maven-assembly-plugin -> execution -> package -> single

上面生成了 3 个我感兴趣的文件(工作正常):

module 1 -> target/webapp.war
module 1 -> target/webapp.war.md5
module 2 -> target/deploy-jar-with-dependances.jar

问题:

我需要 JAR 文件内的校验和。如果创建的所有内容都是某种 Artifact ,那么这个校验和也是 Artifact 吗?如果是,maven-dependency-plugin 应该可以完成这项工作。但如果我要(在模块 2 内):

maven-dependency-plugin -> copy-artifact:package:copy-> net.ju-n.maven.plugins:checksum-maven-plugin -> ${basedir}/src/main/resources

它复制插件的内容,而不是由插件创建的 Artifact ......

最佳答案

我发现考虑在哪里放置配置需要与考虑代码相同的决策。因此,对于给定的事物,使用该事物的代码应该处理该事物。

换句话说,您应该选择选项 2 - WAR 不关心校验和,那么它为什么要生成它?

相反,您应该在 JAR 项目中计算校验和。该插件有一个很好的files goal for that 。这是一个应该适合您的最小示例。

          <plugin>
<groupId>net.ju-n.maven.plugins</groupId>
<artifactId>checksum-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<goals>
<goal>files</goal>
</goals>
<phase>prepare-package</phase>
</execution>
</executions>
<configuration>
<fileSets>
<fileSet>
<directory>PATH_TO_WAR</directory>
<includes>
<include>test.txt</include>
</includes>
</fileSet>
</fileSets>
<individualFilesOutputDirectory>PATH_TO_WAR</individualFilesOutputDirectory>
</configuration>
</plugin>

请注意,此插件执行应该在将 WAR 复制到 JAR 项目之后发生(以便该文件存在),具体来说:

  • 如果它们处于不同阶段,it should happen in a later phase ,
  • 如果它们处于同一阶段,则它应该位于POM 中的 WAR 复制执行定义之后,因为 Maven 运行插件目标执行,它们按照在 POM 中遇到它们的顺序绑定(bind)到同一阶段。

关于java - Maven - 添加可在 Java 内部访问的校验和另一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18788153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com