针对新手的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标签)

资源资源

  • 第1部分
  • Maven War文件夹布局
  • JavaEE 7- xml描述符

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

postman实现从response headers中获取cookie,并将其设置为环境变量

1.最近在学习postman的使用方法,为了保证后续模块操作&#xff0c;必须在登录时获取的session值&#xff0c;并将其设置为环境变量&#xff0c;session的位置处于response headers里面返回的set-cookie参数&#xff0c;并且将set-cookie中的session通过split方法截取出来. 写法…

c语言如何在文件中间插入数据,急求如何将下列C语言程序数据存储到文件中?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中。#include int n0;int rest[7][7]; //全局声明,以供全局调用int main(){void perm(int list[],int ,int );int …

010 pandas的DataFrame

一&#xff1a;创建 1.通过二维数组进行创建 2.取值 取列,取位置的值 3.切片取值 这个和上面的有些不同&#xff0c;这里先取行&#xff0c;再取列 4.设定列索引 这里使用的行索引与上面不同。 5.通过字典的方式创建 6.索引 包含行索引&#xff0c;与列索引 7.修改列索引 转载于…

unity烘培单个物体_Unity可编程渲染管线(SRP)教程:二、自定义着色器

本文翻译自Catlike Coding&#xff0c;原作者&#xff1a;Jasper Flick。本文经原作者授权&#xff0c;转载请说明出处。原文链接在下&#xff1a;https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/custom-shaders/​catlikecoding.com本章内容如下&…

线程跳动

总览 线程jiggler是一个简单的测试框架&#xff0c;用于执行代码以查找线程问题。 它通过在运行时修改字节码类的类来工作&#xff0c;以在指令之间插入Thread.yield&#xff08;&#xff09;调用&#xff0c;从而“微动”线程。 这极大地增加了发现线程问题的可能性&#xff0…

一套比较完整的前端技术选型,需要规整哪些东西,你知道不?

1. 背景及现状 随着前端开发复杂度的日益增加&#xff0c;各种优秀的组件框架也遍地开花。同时&#xff0c;我们面临业务规模的快速发展和工程师团队的不断扩张&#xff0c;如何解决资源整合、模块开发、项目部署、性能优化等问题势在必行。 2. 目标 根据背景和现状的分析&a…

asp.net core2.0里的Nlog

Microsoft.Extensions.Logging&#xff0c;到了Version2.0.0.0&#xff0c;没了AddNlog() ? ——我找不到输出的日志&#xff01; 。。。。。经过一番百度 step1:添加个Provider 这样&#xff0c;在Startup里Configure实现一个ILoger 如果在controller里使用&#xff1f;——…

android 回退函数,详解React Native监听Android回退按键与程序化退出应用

详解React Native监听Android回退按键与程序化退出应用发布时间&#xff1a;2020-09-29 09:25:52来源&#xff1a;脚本之家阅读&#xff1a;137作者&#xff1a;lqh详解React Native监听Android回退按键与程序化退出应用前言我们知道Android回退按键&#xff0c;会控制页面返回…

ajax 全局拦载处理,可加密、过滤、筛选、sql防注入处理

//此方法放在公用的js里面即可。如此&#xff1a;所有的ajax请求都会通过此 $.ajaxSetup({ contentType: "application/x-www-form-urlencoded;charsetutf-8", beforeSend: function() { //发送前执行的函数 try { /** * 当 processData: false,此时后台接收的值都会…

golang jwt设置过期_听说你的JWT库用起来特别扭,推荐这款贼好用的!

以前一直使用的是jjwt这个JWT库&#xff0c;虽然小巧够用, 但对JWT的一些细节封装的不是很好。最近发现了一个更好用的JWT库nimbus-jose-jwt&#xff0c;简单易用&#xff0c;API非常易于理解&#xff0c;对称加密和非对称加密算法都支持&#xff0c;推荐给大家&#xff01;简介…

亚马逊DynamoDB

介绍 Amazon DynamoDB是一项完全托管的NoSQL数据库服务&#xff0c;可提供无缝的可扩展性和快速可预测的性能。 Amazon DynamoDB自动将表的数据和流量分布在足够数量的服务器上&#xff0c;以处理客户指定的请求容量和存储的数据量&#xff0c;同时保持一致且快速的性能。 所…

随机验证码 pillow

安装 pip3 install pillow 基本使用 import PILfrom PIL import Imagefrom PIL import ImageDraw, ImageFontimport random 1.创建图片 from PIL import Image img Img.new(mode"RGB",size(120.30),color(255,255,255))# 在图片查看器中打开 # img.show()# 保存在本地…

微信小程序裁剪图片成圆形

前言 最近在开发小程序&#xff0c;产品经理提了一个需求&#xff0c;要求微信小程序换头像&#xff0c;用户剪裁图片必须是圆形&#xff0c;也在github上看了一些例子&#xff0c;一般剪裁图片用的都是方形&#xff0c;所以自己打算写一个小组件&#xff0c;可以把图片剪裁成圆…

android 系统挂载ext4格式U盘,macOS 系统下格式化 U 盘为 ext4 格式

您好&#xff0c;我是小白&#xff0c;和您请教一下哦。如果您有空QQ回复的话&#xff0c;非常感谢&#xff01;我在第一步输入完安装homebrew的命令后&#xff0c;终端报错wangneddeMBP:~ ned$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebr…

MFC控件编程之组合框跟列表框

MFC控件编程之组合框跟列表框 一丶简介 如果要使用组合框跟列表框.那么就要知道.组合框列表框是最核心的东西就是索引. 索引是从0开始的. 二丶组合框列表框常用的方法 AddString(字符串) 添加一个字符串.放到最后面. DeleteString(索引); 删除指定索引的字符串. int GetCurSe…

使用JaCoCo Maven插件为单元和集成测试创建代码覆盖率报告

当我开始使用Java 7时&#xff0c;我立即注意到Cobertura Maven插件不支持它 。 这对我来说是个大问题&#xff0c;因为我每天都使用代码覆盖率报告。 我做了一些研究&#xff0c;发现了JaCoCo代码覆盖库 。 看起来很有趣&#xff0c;我决定试一试。 问题在于配置它确实很困难…

多重继承_Python 和 Java 基础对比 10 —— 类的封装、继承和多态

Python大星一、Python 类的封装、继承和多态封装继承Python 支持多父类的继承机制&#xff0c;所以需要注意圆括号中基类的顺序&#xff0c;若是基类中有相同的方法名&#xff0c;并且在子类使用时未指定&#xff0c;Python 会从左至右搜索基类中是否包含该方法。一旦查找到则直…

前端也要会的数据结构 (不定期更新篇)

前端的软肋 一说到前端大家脑子里只有&#xff0c;布局、展示数据、修改样式等等。可是数据是哪里来的呢&#xff1f;后端给的后端给的。数据的结构呢&#xff1f;后端给啥用啥。 这就是前端的一个软肋。我们的业务让我们并不需要过深入的了解数据结构&#xff0c;数据结构和…

鸿蒙系统8月9日发布,8月9日,华为发布EMUI10.0系统+展示鸿蒙系统

8月9日&#xff0c;华为将召开华为全球开发者大会&#xff0c;本次大会邀请了5000名全球开发者、1500位合作伙伴&#xff0c;是华为历来规模最大的一次会议。在华为开发者大会上&#xff0c;华为将推出EMUI 10.0系统&#xff0c;由华为消费也业务软件总裁王成录主讲。EMUI是手机…

EclipseLink MOXy和用于JSON处理的Java API –对象模型API

用于JSON处理的Java API&#xff08;JSR-353&#xff09;是用于生成和使用JSON的Java标准&#xff0c;它是Java EE 7的一部分引入。JSR-353包括对象&#xff08;类似于DOM&#xff09;和流&#xff08;类似于StAX&#xff09;API。 在本文中&#xff0c;我将演示我们在EclipseL…