如何从Web项目创建战争和jar?
我有一个maven web项目,包装为“战争”。 该包生成war文件,确认为war格式。 但是,我喜欢将项目打包为“jar”以及默认的“war”格式。 所以,我正在尝试使用“maven jar”插件来实现这一目标。 我使用以下jar插件配置。
org.apache.maven.plugins maven-jar-plugin make-a-jar package jar ${project.build.outputDirectory} ../../src/main/webapp/** **/*
“package”命令生成一个jar文件,其中包含“resources”文件夹的类和内容,war文件生成一个正确的“war”文件。
但是’src / main / webapp’的内容不包含在jar文件中。 如何使用jar插件在jar中包含src / main / webapp的内容?
通常Maven战争:战争提供了2个重要参数如下: –
1个archiveClasses
是否将为webapp中的类创建JAR文件。 使用此可选配置参数将使已编译的类 存档到JAR文件中 , 然后将从webapp中排除classes目录 。 默认值为 :false。 用户属性是 :archiveClasses。
2个attachClasses
是否应将类(即WEB-INF / classes目录的内容)作为附加工件附加到项目中。 默认情况下,附加工件的分类器是“类”。 您可以使用
参数更改它。
someclassifier
即使这是一个提供Maven War Plugin的function ,这也不包括src/main/webapp
到创建的jar文件。 然后你可以考虑Maven Asssembly插件
Maven的Assembly插件主要是为了允许用户将项目输出及其依赖项,模块,站点文档和其他文件聚合到一个可分发的归档中。 目前,它可以使用以下格式创建分发:
- 压缩
- 柏油
- tar.gz的
- TAR.BZ2
- jar
- DIR
- 战争
- 以及为其配置ArchiveManager的任何其他格式
通过使用程序集描述符 ,您可以过滤某些分发文件以及包括和排除工件等。 这意味着您可以使用任何所需的内容/资源创建自己的存档。
如果您想使用Maven Jar插件,就像您提到的那样。 它还提供以下内容: –
- 包含/排除jar工件中的内容
- 从项目中创建其他附加的jar工件
- 等等
使用页面将为您提供更多信息。
我希望这可能有所帮助。
使用Maven唯一干净的方法就是将项目拆分为两个项目,一个用于构建jar,一个用于构建战争。(更简单的标准项目比一个非标准项目更好,尤其是Maven)
现在如果你还想在src / main / webapp中共享文件,你可以使用war覆盖(war as dependencies),或者使用类似spring servletDispatcher及其mvc:resources标签的东西。