Tha*_*din 13 snapshot nexus maven maven-assembly-plugin
这是场景:
两个Maven 3项目构建.
Build 1具有部署到Nexus的快照jar.
Build 2依赖于快照,引用类似1.0.0-SNAPSHOT,使用该mvn clean package assembly:single命令打包并压缩.
我们遇到的问题:偶尔在创建程序集时,jar的MANIFEST文件有时会说some.jar.1.0.0-SNAPSHOT,有时它会说some.jar.1.0.0-datetime戳,因此导致类未定义错误.
有没有办法在清单文件中阻止此命名问题?
- 编辑 -
进一步的研究发现了以下内容:
"如果快照是从一个仓库解决的,那么它将被加上时间戳,如果它来自反应堆或本地仓库,那么它将是-SNAPSHOT.该插件调用maven解析逻辑,因此这是核心maven行为."
这是正在遇到的确切问题.第二个构建清单文件总是有一个./lib/Framework-1.0.0-SNAPSHOT.jar条目,其中实际的jar文件名在./lib/Framework-1.0.0-SNAPSHOT.jar和./lib/之间变化Framework-1.0.0-timestamp.jar基于上面的引用.
在<dependencySet>你需要设置<outputFileNameMapping>${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension}</outputFileNameMapping>
例如:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>appserverB</id>
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<outputDirectory>/lib</outputDirectory>
<outputFileNameMapping>${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension}</outputFileNameMapping>
<includes>
<include>application:logging</include>
<include>application:core</include>
<include>application:utils</include>
<include>application:appserverB</include>
</includes>
</dependencySet>
</dependencySets>
</assembly>
Run Code Online (Sandbox Code Playgroud)
如果您使用其中一个内置程序集描述符,则需要为自己复制它并自行添加outputFileNameMapping条目
| 归档时间: |
|
| 查看次数: |
3105 次 |
| 最近记录: |