首页 > 代码库 > Maven学习笔记
Maven学习笔记
躲得过初一躲不了十五,maven迟早要学的,准备现在就学。
何为maven?
优秀的构建工具(makefile、ant),依赖管理工具和项目信息管理工具。
目录:
bin 运行脚本。
boot包含类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置。
conf settings.xml maven配置文件。
lib maven运行需要的java类库。
helloworld实例。详见《maven实战》。
创建hello-world文件夹。创建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.juvenxu.mvnbook</groupId> <artifactId>hello-world</artifactId> <version>1.0-SNAPSHOT</version> <name>Maven Hello World Project</name> </project>
在hello-world\src\main\java\com\juvenxu\mvnbook\helloworld目录下建HelloWorld.java文件。
package com.juvenxu.mvnbook.helloworld; public class HelloWorld { public String sayHello() { return "Hello Maven"; } public static void main(String[] args) { System.out.print( new HelloWorld().sayHello() ); } }
接着cmd在hello-world目录下运行命令mvn clean compile 会编译,并生成class文件。该项目可直接导入eclipse。(安装eclipse的maven插件)
加入依赖包:
<?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.juvenxu.mvnbook</groupId> <artifactId>hello-world</artifactId> <version>1.0-SNAPSHOT</version> <name>Maven Hello World Project</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> </dependencies> </project>
测试方法默认在src/test/java
package com.juvenxu.mvnbook.helloworld; import static org.junit.Assert.assertEquals; import org.junit.Test; public class HelloWorldTest { @Test public void testSayHello() { HelloWorld helloWorld = new HelloWorld(); String result = helloWorld.sayHello(); assertEquals( "Hello Maven", result ); } }
maven测试命令:
mvn clean test
maven打包(默认jar):
mvn clean package
为了打包后可运行,需要继续配置pom.xml:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.juvenxu.mvnbook.helloworld.HelloWorld</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
maven构建项目骨架:
mvn archetype:generate
坐标和依赖是任何一个构件在maven世界的逻辑表示方式。而构建的物理表示方式是文件,maven通过仓库统一管理这些文件。
这个坐标定义的是文件在仓库中的存储路径。
maven仓库分为两种,本地仓库和远程仓库。当maven根据构件寻找时,先寻找本地仓库再寻找远程仓库。
除了groupId,artifectId,version以外,可以包含的元素:
type:依赖的类型。
scope:依赖的范围。
optional:依赖是否可选。
exclusions:用来排除传递性依赖。
生命周期:
maven的生命周期就是为了所有的构建过程进行抽象和统一。maven从大量项目和构建工具中学习和反思,总结了一套高度完善的、易扩展的生命周期。
插件:
生命周期是抽象的,实际工作由插件来做。
maven实践的思路:
最近刚接触的一个项目,一开始很诧异为什么一个项目会分为这么多的小项目,其实这就是用maven做到的。maven不仅是依赖包管理工具,也是项目编译构建工具。
Maven学习笔记