我的war
具有非常标准的Tomcat 7
部署目录结构,其中WEB-INF
目录包含类, lib 等唯一不同的是,我有一个webstart
作为我的应用程序的一部分,并且位于战争顶部(与WEB-INF相同的级别)的 webstart 目录中。其中包含jnlp
配置以及仅包含webstart的JAR依赖关系的lib目录(与Web应用程序在WEB-INF/lib
中使用的依赖关系相反),以便它们可以下载路径,就像我的javascript,css等。当然,主Web应用程序的jar依赖关系不需要在可下载的路径中,所以WEB-INF / lib在那里工作。
这会导致构建中断,因为我无法在WAR构建中包含webstart及其lib,而是它不在那里但是一旦部署了WAR,另一个脚本就会将webstart目录无条件地注入到已部署的应用程序目录中。 webstart,以及依赖项。
如何在可下载的路径中生成包含JNLP及其lib依赖项的WAR,以便在战争无缝部署后它们都在那里?
答案 0 :(得分:2)
您可以使用Maven Dependency Plugin with the copy-dependencies goal,如下所示。在这里,您必须在<artifactItem>
标记内逐一指定所有工件
此外,使用<outputDirectory>
标记指定要复制这些工件的位置。
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>[ groupId ]</groupId>
<artifactId>[ artifactId ]</artifactId>
<version>[ version ]</version>
<type>[ packaging ]</type>
<classifier> [classifier - optional] </classifier>
<overWrite>[ true or false ]</overWrite>
<outputDirectory>[ output directory ]</outputDirectory>
<destFileName>[ filename ]</destFileName>
</artifactItem>
<artifactItem>
<groupId>[ groupId ]</groupId>
<artifactId>[ artifactId ]</artifactId>
<version>[ version ]</version>
<type>[ packaging ]</type>
<classifier> [classifier - optional] </classifier>
<overWrite>[ true or false ]</overWrite>
<outputDirectory>[ output directory ]</outputDirectory>
<destFileName>[ filename ]</destFileName>
</artifactItem>
....
.... Specify all the artifacts like mentioned above that you want to copy to a specified location
</artifactItems>
<!-- other configurations here -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
您还可以查看Webstart Maven Plugin。