针对新手的Java EE7和Maven项目–第2部分–为我们的应用程序定义一场简单的战争...

从第一部分恢复

第1部分
我们刚刚定义了 pom。 一种特殊的pom类型,它最终定义了我们的应用程序将要使用的库。 它还配置了所有用于打包我们应用程序每个模块的Maven工具。 您可以在此处 签出 -1部分示例代码。

因此,到目前为止,在将要开发应用程序的目录中,只有一个名为sample-parent的文件夹,并且该目录中存放有pom.xml 。 我们的父母pom!

CapturFiles_1

正如我们在模块部分中所看到的,我们已经定义了应用程序的构建块

  • 样品耳
  • 样本网
  • 样品服务
  • 样本域

我们需要创建相关的Maven模块,并为每个模块添加特定的pom.xml文件。

定义战争模块

在sample-parent文件夹下,我们创建了一个名为sample-web的子文件夹,并且还添加了pom.xml文件。 (某些人在同一级别上执行此操作)。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>gr.javapapo</groupId>
        <artifactId>sample-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <artifactId>sample-web</artifactId>
    </project>

但是,这仅仅是什么,我们需要更具体地说明此pom将帮助我们构建什么,因此我们需要定义包装类型,模块名称(针对此战争)以及任何依赖项。

    ...
    <artifactId>sample-web</artifactId>
    <packaging>war</packaging>
    <build>
      <finalName>${project.artifactId}</finalName>
    </build>
     
    <dependencies>
      <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <scope>provided</scope>
       </dependency>
    </dependencies>
    </project>

如果您使用的是支持Maven的IDE(例如Eclipse ),它将自动检测pom内容的更改,并会自动为您创建符合Maven War包装的文件夹。 它将为您创建以下结构。 当然,您可以自己做,但是很方便!

样本网
  • src
    • 主要
      • Java(在此处添加您的Java代码)
      • webapp(这是放置WEB-INF \ web.xml的位置)
      • 资源(资源,如属性)
    • 测试
      • Java
      • 资源

CapturFiles_2

在webapp子文件夹下,我已经预创建了\ WEB-INF \ web.xml文件。 我可以跳过这一部分,因为Maven插件可以为我们做这件事,但只是为了说明这种情况,在某些情况下您想自己创建和创建任何自定义条目

CapturFiles_3

如果您想知道如何“放入”一个空的Servlet 3.1 web.xml文件,请在此处查看 ,或下载此文章的代码。 我还在一个简单的包下的java子文件夹中添加了一个非常简单的Servlet,它将包含在我们的应用程序中。 只需几行代码。 同样,您可以在帖子末尾下载相关git(bitbucket)链接中的所有代码。

CapturFiles_6

因此,我们在war模块pom文件中仅添加了几行,然后在拥有IDE的情况下,该工具神奇地为我们创建了非常特定的文件夹布局。 我们已“遵循”此布局,并添加了一个非常简单的servlet java类和一个小的xml描述符。 这里的真正意义是什么?

好吧,关于Maven的好处是,我们的War模块需要构建的一些东西已经在“特殊”父pom中定义和配置了。 但是这些东西是什么,以及Maven将如何使用它? 正如我们已经阐述的那样,Maven完全是关于约定的。 您以“正确”的方式放置正确的事物,然后它将为您完成所有工作。

因此,当行家扫描这个战争包装的pom时,它将需要

  • 编译我们的java类,它是一个servlet
  • 并将sample-web文件夹下的所有内容打包到war文件和所有依赖项中。

谁将做所有这些事情,因为我们没有在战争pom中添加任何特别的东西(除了一个依赖库之外)。 好吧,这是配置或我们的父pom(请参阅上一篇文章)。

为了编译我们的源代码,将“调用” maven-compiler-plugin ,并且由于我们已经定义了maven模块的打包为“ war”,因此将调用maven-war-plugin将所有内容打包为我们,创建适当的描述符。

因此,在我们的应用程序可能具有多个war或jar模块的情况下,如果我们有一个父pom,并且在一个中央位置定义了插件和基本配置,则我们不必在所有或我们中重新定义它war / jar pom(s)。

仅在战争或罐子之一需要特殊处理的情况下(例如,包装一些额外的东西或具有特殊的布局),然后在构建部分下,我们可以重新定义插件并覆盖或添加一些额外的东西,行为。 但这不是我们的情况。 我们希望对插件进行一次定义,并具有一个通用配置,该配置将由将要使用它的应用程序的所有模块“ 继承 ”。

使用上面的提示,您可以尝试并尝试创建上面已经“定义”的示例服务模块,或者等待第三部分将快速介绍其余的具体模块。

您可以在此处找到此帖子的代码。 (post2标签)

资源资源

翻译自: https://www.javacodegeeks.com/2014/05/java-ee7-and-maven-project-for-newbies-part-2-defining-a-simple-war-for-our-application.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值