《项目管理利器——maven 》学习笔记
Maven下载地址 选择 apache-maven-3.3.9-bin.zip 下载后解压。 配置环境变量: 1. 新建环境变量M2_HOME,值为maven解压的地址,例如:D:/maven/apache-maven-3.3.9 2. 在Path变量的值后面添加;%M2_HOME%/bin;
验证配置成功:win+r cmd 输入mvn -v 如果能出现相关信息则成功。
创建文件夹及编写文件
maven01(PRoject name) -src -main -java -com/maven/imooc/model/HelloWorld.java -test -java -com/maven/imooc/model/HelloWorldTest.java -pom.xmlHelloWorld.java
package com.imooc.maven01.model;public class HelloWorld { public String sayHello() { return "Hello World!"; }}HelloWorldTest.java
package com.imooc.maven01.model;import org.junit.*;import org.junit.Assert.*;public class HelloWorldTest { @Test public void testHello() { Assert.assertEquals("Hello World!", new HelloWorld().sayHello()); }}pom.xml
<?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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 包名 --> <groupId>com.imooc.maven01</groupId> <!-- 模块名 建议使用项目名 --> <artifactId>maven01-model</artifactId> <!-- 版本 --> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies></project>在cmd中项目目录下运行mvn compile 看到BUILD SUCCESS即运行成功 (maven下载慢的话可以看这篇博客解决:传送门 然后运行mvn test 看到BUILD SUCCESS即运行成功 会在项目根目录下生成文件夹target 运行mvn package
Speak.java
package com.imooc.maven02.util;import com.imooc.maven01.model.HelloWorld;public class Speak { public String sayHi() { return new HelloWorld().sayHello(); }}SpeakTest.java
package com.imooc.maven02.util;import org.junit.*;import org.junit.Assert.*;public class SpeakTest { @Test public void testSayHi() { Assert.assertEquals("Hello World!", new Speak().sayHi()); }}pom.xml
<?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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.imooc.maven02</groupId> <artifactId>maven02-model02</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <dependency> <groupId>com.imooc.maven01</groupId> <artifactId>maven01-model</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies></project>在maven01项目目录下执行mvn install 将该项目发布到本地仓库中 然后在maven02项目下执行mvn compile。 pom.xml中的依赖会在本地仓库中查找,如果没有就去网上仓库中心下载到本地仓库。
在项目根目录下打开cmd窗口(shift+右键—>cmd) 1. 输入archetype:generate
,然后按照提示进行选择(会卡在奇怪的地方,运行mvn archetype:generate -DarchetypeCatalog=internal
可以解决) 出现choose a number or apply filter,貌似前面是一些模板,直接回车。 2. archetype:generate -DgourpId=组织名,公司网址的反写+项目名称 -DartifactId=项目名-模块名 -Dversion=版本号 -Dpackage=代码所在的包名 mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.imooc.maven04 -DartifactId=maven04-demo -Dversion=1.0.0-SNAPSHOT -Dpackage=com.imooc.maven04.demo -DarchetypeCatalog=internal
构造通过坐标作为其唯一标识,如
<groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version>更改本地仓库位置: 打开…/apache-maven-3.3.9/conf/settings.xml 找到<settings>
标签,中间添加<localRepository>要存放本地仓库的位置(例如D:/repo)</localRepository>
在Eclipse安装Maven(虽然Eclipse自带maven插件的。
右键new—>maven project,选择quickstart 运行:在pom.xml右键run as—>Maven build… Goals处输入:compile 点击run
Maven定义了三套生命周期,三套生命周期之间相互独立
clean生命周期pre-clean:执行清理前的工作;clean:清理上一次构建生成的所有文件;post-clean:执行清理后的工作default生命周期validategenerate-sourcesprocess-sourcesgenerate-resourcesprocess-resources 复制并处理资源文件,至目标目录,准备打包。compile 编译项目的源代码。process-classesgenerate-test-sources process-test-sources generate-test-resourcesprocess-test-resources 复制并处理资源文件,至目标测试目录。test-compile 编译测试源代码。process-test-classestest 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。prepare-packagepackage 接受编译好的代码,打包成可发布的格式,如 JAR 。pre-integration-testintegration-testpost-integration-testverifyinstall 将包安装至本地仓库,以让其它项目依赖。deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。site生命周期pre-site 执行一些需要在生成站点文档之前完成的工作site 生成项目的站点文档post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备site-deploy 将生成的站点文档部署到特定的服务器上运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。
Maven的核心分发包只有不到3MB的大小,Maven会在需要的时候下载并使用插件,对于插件本身,为了能够复用代码,它往往能够完成多个任务。Maven的生命周期与插件相互绑定,用以完成实际的构建任务。具体而言是生命周期的阶段与插件的目标相互绑定,以完成某个具体的构建任务。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <executions> <execution> <phase>package</phase> <!--绑定到的目标阶段--> <goals> <goal>jar-no-fork</goal> <!--目标方式,无分支--> </goals> </execution> </executions> <configuration> <outputDirectory>/absolute/path/to/the/output/directory</outputDirectory> <!--输出路径--> <finalName>filename-of-generated-jar-file</finalName> <attach>false</attach> </configuration> </plugin> </plugins></build>不同版本的构件 1.短路优先 2.先声明先优先,如果路径长度相同,则谁先声明,先解析谁
新建Maven项目,在Filter处选择webapp 配置pom.xml加入Servlet 配置jetty或者Tomcat服务器
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.imooc.webdemo</groupId> <artifactId>webdemo</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>webdemo Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>webdemo</finalName> <plugins> <plugin> <!-- <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.4.1.v20170120</version> --> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <executions> <execution> <!-- 在打包成功后运行服务器 --> <phase>package</phase> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>学习感悟:简单的了解了Maven的用途和使用方法。体会到了用Maven来构建项目的方便之处。
新闻热点
疑难解答