如何从Web项目创建战争和jar?

时间:2013-03-19 20:34:57

标签: java maven

我有一个maven web项目,包装为“战争”。该包生成war文件,确认为war格式。但是,我喜欢将项目打包为“jar”以及默认的“war”格式。所以,我正在尝试使用“maven jar”插件来实现这一目标。我正在使用以下jar插件配置。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
                <execution>
                    <id>make-a-jar</id>
                    <phase>package</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <classesDirectory>${project.build.outputDirectory}</classesDirectory>
                <includes>
                    <include>../../src/main/webapp/**</include>
                    <include>**/*</include>
                </includes>
            </configuration>
        </plugin>

“package”命令生成一个jar文件,其中包含“resources”文件夹的类和内容,war文件会生成一个正确的“war”文件。

但是'src / main / webapp'的内容不包含在jar文件中。 如何使用jar插件在jar中包含src / main / webapp的内容?

2 个答案:

答案 0 :(得分:2)

使用Maven做到这一点的唯一干净方法是将项目分成两个项目,一个用于构建jar,一个用于构建战争。(更简单的标准项目比一个非标准项目更好,尤其是Maven )

现在 如果 您还希望共享src / main / webapp中的文件,您可以使用war覆盖(war as dependencies),  或者使用类似spring servletDispatcher及其mvc:resources标签的东西。

答案 1 :(得分:1)

通常Maven war:war提供2个重要参数,如下所示: -

1 archiveClasses

  

是否将为webapp中的类创建JAR文件。使用此可选配置参数将使已编译的类 归档到JAR文件,然后将从webapp 中排除classes目录。   默认值为:false。   用户属性:archiveClasses。

2 attachClasses

  

是否应将类(即WEB-INF / classes目录的内容)作为附加工件附加到项目中。默认情况下,附加工件的分类器是“类”。您可以使用<classesClassifier>someclassifier</classesClassifier>参数进行更改。

即使这是一个提供Maven War Plugin的功能,也不包括创建的jar文件的src/main/webapp。然后你可以考虑Maven Asssembly Plugin

  

Maven的Assembly插件主要是为了允许用户将项目输出及其依赖项,模块,站点文档和其他文件聚合到一个可分发的归档中。目前,它可以使用以下格式创建发行版:

  1. 拉链
  2. 焦油
  3. 的tar.gz
  4. TAR.BZ2
  5. DIR
  6. 以及已为其配置ArchiveManager的任何其他格式
  7. 使用Assembly Descriptors,您可以Filtering Some Distribution FilesIncluding and Excluding Artifacts等等。这意味着您可以使用任何所需的内容/资源创建自己的存档。

    如果您想使用正如您所提到的Maven Jar Plugin。它还提供以下内容: -

    1. 包含/排除jar工件中的内容
    2. 从项目中创建其他附加的jar工件
    3. usage page会为您提供更多信息。

      我希望这可能有所帮助。