如何在WEB-INF / lib外面包装JNLP可下载的JAR?

时间:2016-09-27 19:29:34

标签: maven jar dependencies jnlp

我的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,以便在战争无缝部署后它们都在那里?

相关:Why can't I pack certain JARs outside WEB-INF

1 个答案:

答案 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