Dea*_*lze 5 java jnlp java-web-start maven
我有一个 Maven 项目,它将 Swing 客户端构建为 jar-with-dependencies.jar 文件。我想使用 Java Web Start 来分发这个 my.gui-0.1.0-jar-with-dependencies.jar 文件。为此,我创建了一个单独的 Maven 项目,该项目使用 JNLP 工件构建了一个 .war 文件。我需要在这个 .war 文件中包含 my.gui-0.1.0-jar-with-dependencies.jar。
我无法确定 jar-with-dependencies.jar 文件的 Maven 坐标。如果我将 Maven 坐标用于 GUI 项目,它会将 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 必须位于我为支持 Java Web Start 而创建的 .war 文件中。
我知道有一个 Maven Webstart 插件,但这看起来像是一场噩梦,所以我只是自己构建一个 .war 文件,其中包含必要的 JNLP 工件。
首先,您希望WAR 文件的用户可以下载 JAR 文件。将 WEB-INF/lib 中的文件作为 WAR 项目的标准依赖项包含进来并不是您想要的。您最可能想要的是将 JAR 放在 WAR 中的不同目录中(例如/downloads)。
要在 Maven 中实现此目的,您可以使用Maven 依赖项插件。
1:使用依赖插件将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>
Run Code Online (Sandbox Code Playgroud)
在这里,我们将您的 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>
Run Code Online (Sandbox Code Playgroud)
这将导致 JAR 文件被捆绑在你的 WARdownloads目录下。然后,用户可以通过访问 /downloads/myartifact.jar 来下载它。
对于 webstart,您可以使用适当的路径配置 JNLP,而不是让用户直接下载 JAR。
| 归档时间: |
|
| 查看次数: |
5423 次 |
| 最近记录: |