我需要在Maven / Nexus中存储一个工件,但是当它被拉下来时,它必须没有最后的版本号。
在你指责我之前,请指着你的皱眉。
我有comm.jar
(Oracle通讯端口驱动程序)。我把它放在我的nexus服务器&它归结为comm-1.0.jar
。但是JAR包含以下代码:
if(streamtokenizer.ttype == -3
&& (i = streamtokenizer.sval.indexOf("comm.jar")) != -1)
硬编码使用自己的名称来知道在哪里找到与之配合的配置文件。 jar已签名,因此我无法对其进行更改。
那么......如何在Nexus中存储jar并且没有分机编号?
这不是我问题的确切答案,但确实解决了我的问题。
我调用了我的jar“comm.jar-1.0.2.jar”代码在文件名中查找“comm.jar”,现在它找到了它! 好吧,所以这是一个软糖,我很幸运,内部代码只是在寻找indexOf。但它有效!
感谢大家对此提出建议!
杰夫
答案 0 :(得分:4)
这不是一个完整的答案,更多的是关于如何处理这个问题的一系列想法。
我认为您需要使用存在的版本号声明您的依赖关系,以确保Maven很乐意解析工件并构建它。因此,诀窍将是确保在成品捆绑之前重命名aritfact。
Maven dependency:copy-dependencies
目标有一个stripVersion
参数可能会有用。我怀疑你可以使用它来正确地重命名JAR,也许作为程序集的一部分(确保将依赖性移动到属于类路径的目录中)。
但是,这样的计划可能会破坏您的开发环境。也许你可以通过用正确的名称捏造一个JAR文件来解决这个问题?
答案 1 :(得分:1)
如果您希望它与war项目一起使用,那么您可以使用File Name Mapping去除版本。
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<outputFileNameMapping>@{artifactId}@.@{extension}@</outputFileNameMapping>
</configuration>
</plugin>
</plugins>
</build>
依赖的罐子将正常结束WEB-INF/lib
,但现在没有版本。
但是根据你的问题,很难说出你的最终产品是什么,战争,罐子,拉链,......