WAR捆绑带有时间戳的SNAPSHOT JAR

时间:2014-10-06 14:47:55

标签: java maven jar java-web-start jnlp

我有这个使用Webstart的多模块项目设置,我需要将WAR与SNAPSHOT JAR捆绑在一起。当JAR捆绑到WAR中时,它们会附加时间戳而不是实际名称。这导致下载过程中出现问题。

Expected - ABC-1.0-SNAPSHOT.jar 
Actual - ABC-1.0-20141002.211448-2.jar 

环境:

操作系统:Unix Maven:3.2.1 JDK:1.7

我已经通过定义maven-war-plugin并在清单配置中设置它来尝试 useUniqueVersions = false

我的webstart配置:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>webstart-maven-plugin</artifactId>
<version>1.0-beta-6</version>
<executions>
    <execution>
        <phase>process-resources</phase>
        <goals>
            <goal>jnlp-download-servlet</goal>
        </goals>
    </execution>
</executions>
<configuration>
    <outputDirectoryName>.</outputDirectoryName>
    <excludeTransitive>true</excludeTransitive>
    <commonJarResources>
        <jarResource>
            ...
        </jarResource>
    </commonJarResources>
    <jnlpFiles>
        <jnlpFile>
            <templateFilename>JNLP-INF/APPLICATION_TEMPLATE.JNLP</templateFilename>
            <outputFilename>client.jnlp</outputFilename>
            <jarResources>
                <jarResource>
                    ...
                </jarResource>
            </jarResources>
        </jnlpFile>
    </jnlpFiles>
    <sign>
        ...
    </sign>
    <outputJarVersions>false</outputJarVersions>
</configuration>

感谢任何输入。

更新 添加有关我添加的WAR插件的详细信息

            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
        </plugin>

行为仍在继续。我读到maven 3使用了一个独特的快照系统。但我正在努力解决它。

还试了以下没有运气

            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <outputFileNameMapping>${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension}</outputFileNameMapping>
            </configuration>
        </plugin>

1 个答案:

答案 0 :(得分:0)

maven-webstart-plugin的创建者不小心颠倒了标志useUniqueVersions的含义。当设置为true时,它会生成-SNAPSHOT.jar形式的jar,当设置为false(默认值)时,它会生成表单的jar - .jar

我发现在maven pom配置中将useUniqueVersions标志设置为true会产生我想要的结果。

我需要这样,因为在尝试启动快照时使用快照的日期戳版本进行部署时,我得到了一个&#34;未找到资源&#34;当它试图获取它试图启动的快照jar时出错。据推测,这意味着servlet代码本身并未设置为处理磁盘上的不同命名,尽管特定的日期戳版本号确实最终出现在jnlp本身。