gpt4 book ai didi

java - 使用 Maven 创建一个包含用于 JNLP 的 jar-with-dependencies.jar 的 .war 文件

转载 作者:搜寻专家 更新时间:2023-11-01 02:51:37 25 4
gpt4 key购买 nike

我有一个 Maven 项目,它构建一个 Swing 客户端作为一个 jar-with-dependencies.jar 文件。我想使用 Java Web Start 分发这个 my.gui-0.1.0-jar-with-dependencies.jar 文件。为此,我创建了一个单独的 Maven 项目,该项目使用 JNLP Artifact 构建一个 .war 文件。我需要在此 .war 文件中包含 my.gui-0.1.0-jar-with-dependencies.jar。

我无法确定 jar-with-dependencies.jar 文件的 Maven 坐标。如果我为 GUI 项目使用 Maven 坐标,它会将 GUI 项目的依赖项 .jar 文件放在 WEB-INF/lib 中,这不是我想要的。我需要在 .war 文件中包含 my.gui-0.1.0-jar-with-dependencies.jar 文件本身。 (我想它可能在 WEB-INF/lib 中。)

我如何告诉 Maven 依赖项是 jar-with-dependencies.jar 文件本身?

如果除了告诉 Maven 包含 jar-with-dependencies.jar 本身的机制之外还有另一种方法,那也可以。 jar-with-dependencies.jar 必须位于我创建的 .war 文件中的某个位置以支持 Java Web Start。

我知道有一个 Maven Webstart 插件,但是 that looks like a nightmare所以我只是用必要的 JNLP Artifact 自己构建一个 .war 文件。

最佳答案

首先,您想要的是 JAR 文件可供 WAR 文件的用户下载。将 WEB-INF/lib 中的文件作为 WAR 项目的标准依赖项包括在内并不是您想要的。您最有可能希望将 JAR 放在 WAR 中的不同目录中(例如 /downloads)。

要在 Maven 中实现这一点,您可以使用 Maven Dependency Plugin .

1: 使用依赖插件到copy您的 JAR 文件到临时构建目录。

      <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy</id>
<phase>generate-resources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>my.group</groupId>
<artifactId>myartifact</artifactId>
<version>1.0</version>
<type>jar</type>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/webapp-downloads</outputDirectory>
<destFileName>myartifact.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>

我们在这里将您的 JAR 文件复制到 ${project.build.directory/webapp-downloads 目录

2:配置WAR插件,包含依赖插件生成的资源。

      <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<webResources>
<resource>
<directory>${project.build.directory/webapp-downloads</directory>
<targetPath>downloads</targetPath>
</resource>
</webResources>
</configuration>
</plugin>

这将导致 JAR 文件被捆绑在您的 WAR 中的 downloads 目录下。然后用户可以通过转到/downloads/myartifact.jar 下载它。

对于 webstart,您可以使用适当的路径配置 JNLP,而不是让用户直接下载 JAR。

关于java - 使用 Maven 创建一个包含用于 JNLP 的 jar-with-dependencies.jar 的 .war 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10181216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com