Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WAR将快照jar与时间戳捆绑在一起_Java_Maven_Jar_Java Web Start_Jnlp - Fatal编程技术网

Java WAR将快照jar与时间戳捆绑在一起

Java WAR将快照jar与时间戳捆绑在一起,java,maven,jar,java-web-start,jnlp,Java,Maven,Jar,Java Web Start,Jnlp,我有一个使用Webstart的多模块项目设置,我需要将WAR与快照JAR捆绑在一起。当JAR被捆绑到WAR中时,它们会被附加一个时间戳,而不是实际的名称。这导致下载过程中出现问题 Expected - ABC-1.0-SNAPSHOT.jar Actual - ABC-1.0-20141002.211448-2.jar 环境: 操作系统:Unix 马文:3.2.1 JDK:1.7 我已经尝试了useUniqueVersions=false,通过定义一个maven war插件并在清单配置中设

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

Expected - ABC-1.0-SNAPSHOT.jar 
Actual - ABC-1.0-20141002.211448-2.jar 
环境:

操作系统:Unix 马文:3.2.1 JDK:1.7

我已经尝试了useUniqueVersions=false,通过定义一个maven war插件并在清单配置中设置它

我的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>

org.codehaus.mojo
webstart maven插件
1.0-beta-6
过程资源
jnlp下载servlet
.
真的
...
JNLP-INF/APPLICATION_TEMPLATE.JNLP
client.jnlp
...
...
假的

感谢您的任何意见

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

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

org.apache.maven.plugins
maven战争插件
2.4
这种行为还在继续。我听说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>

org.apache.maven.plugins
maven战争插件
2.4
${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension}

maven webstart插件的创建者意外地颠倒了标志useUniqueVersions的含义。当设置为true时,它生成形式为-SNAPSHOT.jar的jar,当设置为false(默认值)时,它生成形式为--.jar的jar

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


我之所以需要它,是因为在尝试启动快照时,当它与快照的日期戳版本一起部署时,当它尝试获取它尝试启动的快照jar时,我得到了一个“Resource not found”(未找到资源)错误。这可能意味着servlet代码本身没有设置为处理磁盘上的不同命名,尽管特定的日期戳版本号最终会出现在jnlp本身中。

Hm?您能在创建war文件的地方显示完整的pom文件吗?此外,您使用哪个版本的maven war插件?我的pom中没有对maven war插件的具体定义。我已经将打包定义为WAR,maven应该使用最新版本的WAR插件。。它是2.2版,不是最新版本。此外,您应该始终锁定插件的版本。因此,请使用maven war插件的特定版本2.4检查这种行为。