Java42maven:安装,生命周期,插件
Posted 码农编程录
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java42maven:安装,生命周期,插件相关的知识,希望对你有一定的参考价值。
文章目录
1.maven安装和创建项目:settings.xml,web.xml
如下在A1中只要说引入什么jar包就行。apache-maven-3.6.1解压到F/develop文件夹下,将原来 < localRepository > 和传智内网 < mirrors > 注释掉。
IDEA关联本地maven
:Default Settings后搜索maven,-DarchetypeCatalog=internal ,如下配置好后对当前项目不生效需要重新File-New-Project-maven。
如下resources文件夹里放c3p0-config.xml等,test包下的类必须以XxTest结尾。
如下是创建maven管理的web工程详细步骤。
如下将上面java工程变为web工程,红框一行可以不写,默认为jar包,所以在java工程中没有写这一行。
如上一步可以View-Toolbar如下。
点击如下右边绿色+号设置web.xml,如下蓝色路径不对,替换了。
如上最后点apply-ok
如下第三步配置tomcat
如下点击Fix,新建的tomcat联系本工程。最后在webapp文件夹下新建index.html中body标签里写hello,点击乌龟运行,自动跳出网页显示hello,说明已经成功。
2.生命周期:tomcat运行时直接去maven仓库中读项目压缩的jar/war包
新创建出的工程没有target文件夹(整个项目编译后mvn compile的产出路径,或点击小乌龟后产生【小乌龟做的事是编译,测试,运行】)。
mvn package在target文件夹里多出.war包。如下在maven仓库中。
从远程仓库中获取坐标
1. 中央仓库 : http://mvnrepository.com/
2. 私服: 阿里云: https://maven.aliyun.com/mvn/search
如下pom.xml(web.xml配置url和类的映射关系),修改了都要import changes。
<?xml version="1.0" encoding="UTF-8"?>
<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"> <!--schema约束-->
<!--
pom : project object model项目对象模型 描述整个项目
modelVersion : pom的版本
坐标: groupId + artifactId + version (maven是通过坐标来唯一识别项目: jar/war)
-->
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima.webdemo</groupId>
<artifactId>maven-web2</artifactId>
<version>1.0.0</version>
<!-- 打包方式: war包 (默认jar包) -->
<packaging>war</packaging>
<!--
依赖:dependencies > 多个dependency
版本统一管理 : properties
-->
<properties>
<spring.version>4.2.5.RELEASE</spring.version>
<c3p0.version>0.9.1.2</c3p0.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.8.5.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<!--JDK编译插件,不论java工程还是web工程都要配置-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!--test插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>
<!-- tomcat7插件,端口设为80不是8080,因为http协议80端口不用写 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
如上在Demo.java里写junit test是不合法的,web工程只要一个入口即tomcat的main方法,test没有意义。默认不写 < scope > compile < /scope >。
javax.servlet 3.0以上才支持注解。以前在web项目里可直接用servlet,没有需导包这回事,以前创建Java Enterprise时已指定tomcat,现在是maven没指定tomcat(后来才配置,servlet是接口,其实现由tomcat提供)。
因为web工程主入口在tomcat里,tomcat起到运行作用,maven只是一个管理工具,如果我们自己导入的servlet api存活到运行时期,有可能和tomcat里servlet api版本不同产生冲突。
写代码时不导jdbc驱动,编译不会报错(因为 " " 写的是字符串),运行会报错(找不到这个类)。system是本地绝对路径,但是发布时不能用绝对路径,所以system不看。
3.插件:maven的jdk是1.5,所以maven要扩展功能jdk1.8即插件
用maven功能测试代码(右边点击test功能【这个功能和按乌龟效果一样】,不是用idea在test代码里右击运行)会乱码,maven默认编码格式不是utf-8。
用maven的tomcat插件也可以让tomcat运行我们的程序,pom.xml写好tomcat7依赖后,还需要按如下操作,换成tomcat7后再点击乌龟。
点击如下绿色+号,选择Maven。
如下用插件(80端口可省略),不用插件用8080。
初始情况下,我们的本地仓库是没有任何jar包的,此时会从私服去下载(如果没有配置,就直接从中央仓库去下载),可能由于网络的原因,jar包下载不完全,这些不完整的jar包都是以lastUpdated结尾。
此时,maven不会再重新帮你下载,需要你删除这些以lastUpdated结尾的文件。如果本地仓库中有很多这样的以lastUpadted结尾的文件,可以执行如下脚本来删除:
set REPOSITORY_PATH=E:\\javaDevlopment\\maven\\health_repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\\*lastUpdated*"') do (
del /s /q %%i
)
rem 搜索完毕
pause
<!--统一管理依赖版本,还要加入插件换成jdk1.8,不然默认jdk1.5会报错。-->
<properties>
<c3p0.version>0.9.1.2</c3p0.version>
<beanutils.version>1.8.3</beanutils.version>
<commons.logging.version>1.1.1</commons.logging.version>
<fastjson.version>1.2.47</fastjson.version>
<servlet.version>3.0.1</servlet.version>
<jstl.version>1.2</jstl.version>
<mysql.connector.version>5.1.18</mysql.connector.version>
<spring.version>4.2.4.RELEASE</spring.version>
</properties>
<dependencies>
<!--c3p0-->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
<!--commons-beanutils-->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>${beanutils.version}</version>
</dependency>
<!--commons-logging-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons.logging.version}</version>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!--servlet3-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<!--jstl-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
<scope>runtime</scope>
</dependency>
<!--spring-jdbctemplate-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
以上是关于Java42maven:安装,生命周期,插件的主要内容,如果未能解决你的问题,请参考以下文章