从pom.xml为现有Maven项目创建WAR文件



我正在创建一个web项目,有人告诉我它必须位于现有maven项目的资源目录中

以下是项目的结构

MavenProject
|-- src
|   |-- main
|   `-- resources
|       `-- My-Web-Project
|           |-- META-INF
|           |    `-- MANIFEST.MF
|           |-- src
|           |   |-- classes
|           |   |   |-- com
|           |   |   |   `-- example
|           |   |   |       `-- projects
|           |   |   |           `-- SampleAction.class
|           `-- web
|               |-- css
|               |-- css
|               |-- img
|               |-- js
|               |-- WEB-INF
|               |   `-- web.xml 
|               |-- index.jsp
|               `-- secondary.jsp
|-- test
`-- pom.xml

正如您所看到的,MavenProject已经有一个pom.xml文件。我希望能够使用当前的pom.xml.部署我的web项目WAR

我想知道是否可以做到这一点,以及我将如何继续创建Maven插件。

我读了这篇文章,但我不知道它是否适用于我的情况http://maven.apache.org/plugins/maven-war-plugin/usage.html

编辑:

我正在使用tomcat应用服务器。

如前所述,我的项目"我的Web项目"应该在"资源"下

阅读此文档,虽然不完整,但它是一个很好的开端。

无法使用约定时使用Maven

  • 使用maven使用非标准目录布局

样本配置(不推荐)

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>src/main/resources/My-Web-Project/web</directory>
</resource>
</webResources>
</configuration>
</plugin>

这还不完整,target和类不应该位于源目录中。


Maven约定-推荐解决方案

我被告知它(web项目)必须位于现有maven项目的资源目录中

这是错误的,不应该在资源内创建web项目

阅读Maven Convention over Configuration。

配置上的约定是一个简单的概念。系统、库和框架应该采用合理的默认值。在不需要不必要的配置的情况下,系统应该"正常工作"。

使用约定而不是配置

正确的目录结构应该是这样的:

MavenProject
|-- src
|   |-- main
|   |   `-- java
|   |       `-- com
|   |           `-- example
|   |               `-- projects
|   |                   `-- SampleAction.java
|   `-- resources
|   |   `-- META-INF
|   |       `-- MANIFEST.MF
|   `-- webapp
|        |-- css
|        |-- img
|        |-- js
|        |-- WEB-INF
|        |   `-- web.xml
|        |-- index.jsp
|        `-- secondary.jsp
|-- test
|-- target  // this is generated by maven!
|   |-- classes
|   |   `-- com
|   |       `-- example
|   |           `-- projects
|   |               `-- SampleAction.class
`-- pom.xml

来源:标准目录布局简介

您使用的应用程序服务器是什么?大多数应用服务器已经有了自己的maven插件,可以部署war,所以你不必自己编写:jboss-maven插件,tomcat maven插件。

此外,您的文件夹结构不符合maven标准。通常,如果您遵循标准并将存档类型设置为war,则包上目标maven会在目标文件夹中自动为您生成war。

最新更新