1.IDEA集成Maven191.1在idea中设置maven,使idea与maven相结合。19
maven内置在idea中,一般不使用内置,因为不方便用内置修改maven的设置。
使用自己安装的maven需要覆盖idea中的默认设置。让idea指定maven安装位置等信息
1.2配置入口19①:配置当前工程设置,file--settings---Build,Excution,Deployment--BuildTools
--Maven
MavenHomedirectory:maven安装目录
UserSettingsFile:conf/maven安装目录setting.xml配置文件
LocalRepository:本机仓库目录位置
--BuildTools--Maven--Runner
VMOptions:-DarchetypeCatalog=internal
JRE:您项目的jdk
-DarchetypeCatalog=internal,创建maven项目时,模板文件会在网上下载,使用比较大-DarchetypeCatalog=internal,无需下载,创建maven项目速度快。
②:新建工程设置配置后,file--othersettings--Settingsfornewproject2
File---->Settings:设置maven安装主目录和mavensettings.xml文件和当地仓库的位置。
2.IDEA创建Maven版java工程212.1maven-archetype-quickstart:21-22普通java项目代码在main22com.bjpowernodeHelloMavenpackage com.bjpowernode;//写一个简单的类别 22public class HelloMaven {public int add(int n1,int n2){return n1+n2;}public static void main(String[] args){HelloMaven hello = new HelloMaven();int res = hello.add(10,20);System.out.println("10+20="+res);}}
test23com.bjpowernodeTestHelloMavenpackage com.bjpowernode;import org.junit.Assert;import org.junit.Test;//测试23public class TestHelloMaven {@Testpublic void testAdd(){System.out.println(“=========testadd测试add方法”;HelloMaven hello = new HelloMaven();int res = hello.add(10,20);///判断Assert是否正确.assertEquals(30,res);}@Testpublic void testadd2(){System.out.println(++++++testadd测试add方法);HelloMaven hello = new HelloMaven();int res = hello.add(10,20);///判断Assert是否正确.assertEquals(30,res);}}
3.maven-archetype-webapp:web工程243.1创建缺省文件夹244src-main-java/resources,src-test-java/resources
3.1.1.将文件夹标记为源码文件夹24File->ProjectStructure,选择Modules:在右边找到java机构,上面有一个“Maskas点击Sources,
这意味着它是源代码类
4.代码演示24代码在maincom.bjpowernode.controllerHelloServletpackage com.bjpowernode.controller;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;///写一个简单的servlet 24public class HelloServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text;html;charset=utf-8");PrintWriter pw = response.getWriter();pw.println("Hello Maven web");pw.flush();pw.close();}}
web.xml<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.bjpowernode.controller.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping></web-app>
tomcat10依赖<!-- Jarr加入servlet依赖servlet--><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>5.0.0</version><scope>provided</scope></dependency><!-- jsp依赖jsp的jar包--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version><scope>provided</scope></dependency>
index.jsp<%@ page contentType="text/html;charset=utf-8" language="java" %><html><body><h2>Hello World!</h2><a href="hello">Helloservet访问</a></body></html>
5.使用scope表示依赖范围285.1。compile值scope,test,provided,默认是compile
scope:表示依赖使用范围,即在maven建设项目的那些阶段发挥作用。
编译、测试、包装、安装maven建设项目,部署过程(阶段)
5.1.test28依赖于1junittest只在测量只有在试验阶段才有效
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
5.1.2compile28编译、测试、包装、安装compile
<dependency>
<groupId>a</groupId>
<artifactId>b</artifactId> b.jar
<version>4.11</version>
<scope>compile</scope>
</dependency>
1.1.3.provided28编译provided,测试
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version> servlet.jar
<scope>provided</scope> 提供者
</dependency>
5.2总结28依赖的范围
依赖范围:compile、test、provided,默认情况下,compile
你在写项目中使用的所有依赖(jar),本地仓库必须有。
没有必要通过maven下载,包括provided。
在servlet中,您需要继承Httpservlet(provided),您使用的Httpservlet是maven仓库。
当您的编写程序在tomat服务器中运行时,您的程序中不包含servlet的jarr
因为tomcat提供servlet.jar
6.maven常用操作3006.1maven属性设置30设置maven的常用属性
6.1.1maven全局变量30自定义属性
1.通过自定义标签声明变量(标签名称为变量名)
2.在pom.使用${标签名}在xml文件中的其他位置使用变量值
自定义全局变量通常是定义所依赖的版本号。当您的项目使用多个相同的版本号时,首先使用全局变量定义,然后使用${变量名}
6.2资源插件30-31<build>
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties,.xml 扫描所有文件-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--filtering 选项 false 不使用过滤器, *.property 它已经起到了过滤的作用 -->
<filtering>false</filtering>
</resource>
</resources>
</build>
2.2.1作用:30-311. 默认不使用resources时, 当maven执行编译代码时, 会把src//main/resource目录中的文件复制到target/classes目录中。对于src//main不处理java目录下的文件不会复制到target/classes目录中
2. 但是,我们的程序需要在SRC//main在java目录下,当我执行java程序时,我需要使用src/main/java目录下的文件需要告诉mavenmvn compile src/main在java目录下的程序中,需要将文件复制到target/clases目录中,需要在这个时候<build></build>种加入<resources>