【问题标题】:WAR bundles SNAPSHOT JARs with timestampsWAR 将 SNAPSHOT JAR 与时间戳捆绑在一起
【发布时间】:2014-11-30 20:46:30
【问题描述】:

我有这个使用 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>

【问题讨论】:

  • 嗯..你写 maven-war-plugin 是问题,但你显示 webstart-maven-plugin 的配置?你能在你创建你的war文件的地方显示完整的pom文件吗?此外,您使用哪个版本的 maven-war-plugin?
  • 我的 pom.xml 中没有 maven war 插件的具体定义。我已经将打包定义为WAR,maven应该使用最新版本的war插件。
  • It is not the latest。它是 2.2 版,不是最新版本。此外,您应该始终固定插件的版本。因此,请使用 maven-war-plugin 的特定版本 2.4 检查此行为。

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


【解决方案1】:

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

的 jar

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

我之所以需要这样,是因为在尝试启动它时使用快照的日期戳版本部署时,当它尝试获取它试图启动的快照 jar 时,我收到“找不到资源”错误。大概这意味着 servlet 代码本身没有设置为处理磁盘上的不同命名,尽管特定的日期戳版本号确实最终在 jnlp 本身中。

【讨论】:

    猜你喜欢
    • 2019-07-24
    • 1970-01-01
    • 2011-10-12
    • 2014-01-26
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    相关资源
    最近更新 更多