![cover](https://img-blog.csdnimg.cn/3ddbc20f3fc949498dad3a1fa6cd24ed.png)
IDE工具中使用Maven -- Maven配置、开发 【IDEA激活code】
Maven内容管理在IDE工具中使用MavenIDEA配置MavenIDEA中创建项目Eclipse中配置MavenEclipse创建web项目设置依赖后爆红导入module依赖范围maven的属性设置全局变量资源插件Javaweb — emmm…快快的,马上进框架了,都是工具,害MavenMaven作为构建项目的辅助工具,其发挥的作用是巨大的,特别是依赖管理和项目构建非常强大,但是技术加上工具也
Maven
内容管理
Javaweb — emmm…快快的,马上进框架了,都是工具,害
Maven
Maven作为构建项目的辅助工具,其发挥的作用是巨大的,特别是依赖管理和项目构建非常强大,但是技术加上工具也许会实现另外一种腾飞,就像IDE工具 + Tomcat
在IDE工具中使用Maven
IDEA配置Maven
在IDEA工具中内置了很多工具,但是一般为了方便修改,不用内置的工具,而是使用安装的工具,这样就不会出现工具的局限,其他的工具比如eclipse也可以使用;所以需要在IDEA中去覆盖默认配置。
- 首先需要设置的地方是File目录下的settings【代表当前工程】和other settrings【代表以后的工程】 ---- 修改的方式相同
找到settings中的build、Excution、Deployment----> build Tools---->maven —> maven home directory : maven安装目录 ; User settings File : maven安装目录中的conf/setting.xml文件 Local Repostory: 本机仓库的目录位置
- 然后将几个位置进行修改 : 为了更加快捷运行maven,在maven下的runner位置设置VM options : -DarchetypeCatalog=internal
这样配置就算完成了
IDEA中创建项目
创建空项目之后,然后添加module;这个时候选择maven;复选框就是是否使用archetype;也就是使用模板创建项目
1).maven-archetype-quickstart
: 普通的java项目
这个时候点击next,会出现Parent,这里没有父项目,不用管,命名之后进入后面设置项目的坐标
可以看到下面创建项目成功【这个模板默认是没有resources文件夹】
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:RELEASE
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: Cfeng
[INFO] Parameter: artifactId, Value: maventest
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: Cfeng
[INFO] Parameter: packageInPathFormat, Value: Cfeng
[INFO] Parameter: package, Value: Cfeng
[INFO] Parameter: groupId, Value: Cfeng
[INFO] Parameter: artifactId, Value: maventest
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: C:\Users\OMEY-PC\AppData\Local\Temp\archetypetmp\maventest
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
注意,建立项目的时候,普通的文件夹是不能创建java classes的,要sources 蓝色的文件夹才可以,所以需要将防止java类的包设置为source类型
也就是主程序的java文件夹应该为蓝色的,测试程序的java文件夹为绿色的,资源文件则要设置为资源文件类型
package Cfeng;
public 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("result =" + res);
}
}
//简单写一下这个主程序,这个时候在写一个test程序
2).maven-archetype-webapp
: java web项目
这里直接new module ,选择maven的模板,创键java web项目
这里感觉2019.1.3不是很好用,就卸载重装了2019.3;安装的过程还是很简单,就来一个插件即可;
<!--加入servlet依赖,(servlet的jar包) 不需要再配置tomcat了 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!--jsp的依赖,不需要tomcat了 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
之后创建相应的文件夹,在main的java文件夹下面创建cfeng.controller包,新建一个servlet;这里就不在web.xml中配置,直接使用webservlet注解
package cfeng.controller;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("你好");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("你好");
}
}
然后就简单在index.jsp中写一个超链接
<html>
<body>
<h2>Hello World!</h2>
<a href="hello">Welcome</a>
</body>
</html>
再将项目部署到Tomcat就可以正常运行了
Eclipse中配置Maven
Eclipse之前忘记配置JDK的路径,导致用了半年的默认的下载的JDK,全部在C盘的当前用户的.p2文件夹中;所以以后下载的时候除了要看最开始的安装路径,还要记得修改conf中的配置xml
-
首先就是将本地的maven配置到软件中,在window-----> Perferences下面选择Maven;选择installations;点击Add,选择安装的路径,之后apply即可
-
【配置仓库和设置】选择User settings ,设置几个值,和IDEA相同,都是直接配置即可
在其下的archType中,已经选择了interna,所以就不用修改
Eclipse创建web项目
这里选择的时候就直接创建Maven project;这样之后创建普通的项目就直接jar包选择即可;但是对于web项目,首先要选择war包;创建之后会报错
- 这个时候首先点击项目,选择build Path — configuration ----> 选择java factor —> 取消勾选dynamic【动态】 apply之后,再次勾选
勾选时出现问题【eclipse选择maven的时候显示requires java 1.8 or newer】?
这个时候可以用navigator视角观察项目的classpath的settings,发现其默认的jdk版本是1.5 ;所以这里需要修改,第一种就是在该项目的pom.xml中添加一个jdk版本设置
<properties>
<!-- 这里的{jdk_version}填入你的jdk版本,我使用的是openjkd16 -->
<maven.compiler.target>16</maven.compiler.target>
<maven.compiler.source>16</maven.compiler.source>
</properties>
但是这样子每次都需要修改,所以可以直接修改Maven的配置文件settings
<profile>
<id>jdk-16</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>16</jdk>
</activation>
<properties>
<maven.compiler.source>16</maven.compiler.source>
<maven.compiler.target>16</maven.compiler.target>
<maven.compiler.compilerVersion>16</maven.compiler.compilerVersion>
</properties>
</profile>
这个是在标签profiles下面;修改之后要记得点击项目的Maven,选择Update; 然后就会刷新,或者直接重启Eclipse也行
- 之后勾选上之后可以点击下面的超链接设置contentPath;然后就成功创建了项目
设置依赖后爆红
这里可能是IDEA还没有立刻引入依赖,这里可以通过
右键pom.xml----> 选择Maven---> Reimport
这样就可以刷新,重新导入,解决依赖不识别的问题
导入module
点击右上角的图标【project structure】 ,进入之后点击module,点击 + 号,就可以导入一个磁盘中的maven项目;选择import,选择maven,JDK选择电脑上的JDK,finish就可
依赖范围
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
使用scope表示的,scope的值有compile,test,provided ; scope表示的是依赖使用的范围;在maven构建项目的哪些阶段起作用
maven构建项目的过程有清理、编译、测试、打包、安装、部署等阶段
- test : 说明这些代码只是在测试阶段起作用 【也就是在代码的编译的时候是不会用到junit的】
- compile: 说明这些代码在整个过程中都会用到【全部生命周期,默认】,包括打包和部署
- provide: 提供者;这些代码只是在前面的几个阶段,就是编译和测试的时候使用,但是在打包和安装部署不需要,比如servlet、jsp等jar包在tomcat中都提供了的
所以以后使用框架等,直接就使用maven工具加载依赖就可以了,就不需要像之前下各种文件
maven的属性设置
就是pom.xml中的properties标签中设置属性
- project.build.sourceEncoding : maven构建项目使用的编码,避免中文乱码
- maven.compiler.source : 编译代码使用的JDK版本
- maven.compiler.target : 运行程序使用的jdk版本
全局变量
自定义的属性 : 在properties中通过自定义标签声明变量【标签名就是变量名】
在pom.xml中的其他位置就可以使用${标签名} 使用整个变量【和jsp的el的简化格式同】
<properties>
<spring.version>5.2.1</spring.version>
</properties>
<groupId></groupId>
<artifactId></artifactId>
<version>${spring.version}</version>
为什么要使用?
如果项目要使用多个相同的版本号,就可以先自定义全局变量,之后就可以使用${}来运用这个版本号;比如Spring框架中就有很多的插件【所以就使用一个全局变量来设置版本号】便于统一管理
资源插件
这个资源插件和其他的插件相同,都是在build标签中
<build>
<resources>
<resource>
<!--文件资源所在的目录-->
<directory>src/main/java</directory>
<!--包括目录下的.properties,.xml 文件都会扫描到,这个时候就要使用**/*.后缀的格式-->
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 -->
<filtering>false</filtering>
</resource>
</resources>
</build>
资源插件的作用:
- 默认没有使用resources的时候,maven执行编译代码的时候,会将src/main/resources目录中的文件拷贝到target/classes目录中【之前验证过】 — 执行的时候都是执行target中的文件,因为是编译过的classes;但是对于src/main/java目录中的非java文件不会进行处理,不拷贝到target/classes
- 所以比如数据库配置文件,需要在src/main/java下放置文件,当执行java程序的时候,需要用到其中的文件,这个时候就需要告诉maven在mvn compile src/main/java下的程序是,需要将文件一同拷贝到target/classes中,此时,就需要在build中加入resource ---- 资源插件
但是配置了资源插件之后,原来的默认将resources下面的拷贝操作就不行了,.没有使用这个资源插件时,编译时才会把src/main/resources下的文件拷贝到target/classes ;
这里解决的办法很简单,因为父标签为resources,直接就表示资源插件不只是一个,可以多个,再把resources目录配置过来就可以了
<resource>
<!--这里要注意,如果设置了处理设置,原先resources目录下的文件都不会拷贝到target目录下了
,所以这里还要再设置一下resources目录,以便能拷贝过去-->
<directory>src/main/resources</directory>
<includes>
<!--表示resources下的任何子目录的任何文件都拷贝过去 *表示所有,不只是xml,properties,txt,img等都可以-->
<include>**/*.*</include>
</includes>
<filtering>false</filtering>
</resource>
这里差不多就将基本的maven操作的知识给说完了,中间关于IDEA2019.3.2的安装直接略过了🌳
本来想写破解码的,还是算了吧
更多推荐
所有评论(0)