繁体   English   中英

存储没有版本号的Nexus / Maven工件

[英]Store Nexus/Maven artifact with no version number

我需要在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“comm.jar-1.0.2.jar”代码在文件名中查找“comm.jar”,现在它找到了它! 好吧,所以这是一个软糖,我很幸运,内部代码只是在寻找indexOf。 但它的确有效!

感谢大家对此有所建议!

杰夫

这不是一个完整的答案,更多的是关于如何处理这个问题的一系列想法。

我认为您需要使用当前版本号声明您的依赖关系,以确保Maven很乐意解决该工件并构建它。 因此,诀窍将是确保在成品捆绑之前重命名aritfact。

Maven dependency:copy-dependencies目标有一个可能有用的stripVersion参数。 我怀疑你可以使用它来正确地重命名JAR,也许作为程序集的一部分(确保将依赖性移动到属于类路径的目录)。

但是,这样的计划可能会破坏您的开发环境。 也许你可以通过用正确的名称捏造一个JAR文件来解决这个问题?

如果您希望它与war项目一起使用,那么您可以使用文件名映射来剥离版本。

<build>
    <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <outputFileNameMapping>@{artifactId}@.@{extension}@</outputFileNameMapping>
            </configuration>
        </plugin>
    </plugins>
</build>

依赖的jar将正常结束在WEB-INF/lib但现在没有版本。

但是从你的问题来看,很难说你的最终产品是什么,战争,罐子,拉链......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM