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

时间:2014-01-16 21:42:55

标签: java maven pom.xml

我正在创建一个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 app server。

如前所述,我的项目“My-Web-Project”应位于“资源”

之下

2 个答案:

答案 0 :(得分:7)

阅读本文档,不完整,但它是一个很好的入门者。

Using Maven When You Can't Use the Conventions

示例配置(不推荐

 <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

来源:Introduction to the Standard Directory Layout

答案 1 :(得分:3)

您使用的是哪个应用服务器?大多数应用服务器都有自己的maven插件,可以部署战争,所以你不必自己写:jboss-maven-plugintomcat-maven-plugin

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