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

时间:2012-11-14 11:00:25

标签: maven nexus

我需要在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。但它有效!

感谢大家对此提出建议!

杰夫

2 个答案:

答案 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,但现在没有版本。

但是根据你的问题,很难说出你的最终产品是什么,战争,罐子,拉链,......