如何从Web项目创建一个war和jar?

我有一个Maven网站项目,其包装为“战争”。 该包会生成确认为战争格式的战争文件。 但是,我喜欢将该项目打包为“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的内容?


通常Maven战争:战争提供了2个重要的参数,如下所示: -

1个archiveClasses

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

2个attachClasses

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

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

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

  • 压缩
  • 柏油
  • tar.gz的
  • TAR.BZ2
  • DIR
  • 战争
  • 以及ArchiveManager已配置的任何其他格式
  • 通过使用程序集描述符,您可以过滤一些分发文件以及包含和排除工件等。 这意味着您可以使用任何必需的内容/资源创建自己的档案。

    如果你想使用Maven Jar Plugin,就像你刚才提到的那样。 它还提供了以下内容: -

  • 包含/排除jar工件中的内容
  • 从项目中创建附加的jar工件
  • 等等
  • 使用页面将为您提供更多信息。

    我希望这可能会有所帮助。


    Maven唯一干净利落的方法是将两个项目拆分成两个项目,一个用于构建jar,另一个用于构建战争(更简单的标准项目比一个非标准的项目更好,尤其是Maven)

    现在, 如果您还想共享src / main / webapp中的文件,可以使用war叠加层(war作为依赖项),或者使用类似spring servletDispatcher及其mvc:resources标签的东西。

    链接地址: http://www.djcxy.com/p/74655.html

    上一篇: How to create a war and jar from a web project?

    下一篇: How to use JSF extension library as OSGI bundle