加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Maven学习笔记

发布时间:2020-12-14 06:32:59 所属栏目:Java 来源:网络整理
导读:学习笔记 选择 apache-maven-3.3.9-bin.zip下载后解压。配置环境变量: 新建环境变量M2_HOME,值为maven解压的地址,例如:D:mavenapache-maven-3.3.9 在Path变量的值后面添加 ;%M2_HOME%bin; 验证配置成功:win+r cmd 输入mvn -v 如果能出现相关信息则成

学习笔记

选择 apache-maven-3.3.9-bin.zip 下载后解压。 配置环境变量:

  1. 新建环境变量M2_HOME,值为maven解压的地址,例如:D:mavenapache-maven-3.3.9
  2. 在Path变量的值后面添加;%M2_HOME%bin; 验证配置成功:win+r cmd 输入mvn -v 如果能出现相关信息则成功。

src
-main
    -java
        -package(自定义的包)
-test
    -java
        -package
-resources(存放一些资源文件)

创建文件夹及编写文件

maven01(project name)
    -src
        -main
            -java
                -com/maven/imooc/model/HelloWorld.java
        -test
            -java
                -com/maven/imooc/model/HelloWorldTest.java
    -pom.xml

HelloWorld.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


4.0.0
<!-- 包名 -->
<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>

在cmd中项目目录下运行mvn compile 看到BUILD SUCCESS即运行成功 (maven下载慢的话可以看这篇博客解决: 然后运行mvn test 看到BUILD SUCCESS即运行成功 会在项目根目录下生成文件夹target 运行mvn package


  1. mvn -v 查看maven版本。
  2. mvn compile 编译。
  3. mvn test 测试。
  4. mvn package 打包。
  5. mvn clean 清除maven生成的target目录。
  6. mvn install 将生成的jar安装到本地仓库中。

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


4.0.0
<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>

在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

构造通过坐标作为其唯一标识,如

junit
junit
4.10

更改本地仓库位置: 打开...apache-maven-3.3.9confsettings.xml 找到标签,中间添加要存放本地仓库的位置(例如D:/repo) ____

(虽然Eclipse自带maven插件的。

右键new—>maven project,选择quickstart 运行:在pom.xml右键run as—>Maven build... Goals处输入:compile 点击run ____

Maven定义了三套生命周期,三套生命周期之间相互独立

  • clean生命周期
pre-clean:执行清理前的工作;
clean:清理上一次构建生成的所有文件;
post-clean:执行清理后的工作
  • default生命周期
validate
generate-sources
process-sources
generate-resources
process-resources 复制并处理资源文件,至目标目录,准备打包。
compile 编译项目的源代码。
process-classes
generate-test-sources 
process-test-sources 
generate-test-resources
process-test-resources 复制并处理资源文件,至目标测试目录。
test-compile 编译测试源代码。
process-test-classes
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
prepare-package
package 接受编译好的代码,打包成可发布的格式,如 JAR 。
pre-integration-test
integration-test
post-integration-test
verify
install 将包安装至本地仓库,以让其它项目依赖。
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
  • site生命周期
pre-site 执行一些需要在生成站点文档之前完成的工作
site    生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上

运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。

Maven的核心分发包只有不到3MB的大小,Maven会在需要的时候下载并使用插件,对于插件本身,为了能够复用代码,它往往能够完成多个任务。Maven的生命周期与插件相互绑定,用以完成实际的构建任务。具体而言是生命周期的阶段与插件的目标相互绑定,以完成某个具体的构建任务。


    
        
            org.apache.maven.plugins
            maven-source-plugin
            2.4
            
                
                    package 
                    
                        jar-no-fork 
                    
                
            
            
                /absolute/path/to/the/output/directory 
                filename-of-generated-jar-file
                false
            
        
    

1.根元素 project
2.modelVersion 固定版本4.0.0 指定了当前pom的版本
3.坐标 ,,,
    groupId 反写的公司网址+项目名
    artifactId 项目名+模块名
    version 版本号 第一个0表示大版本号,第二个0表示大版本号,第三个0表示大版本号。如:0.0.1snapshot
    (snapshot 快照/ alpha 内部测试/ beta 公测/ Release稳定/ GA正式发布)
    packaging 打包方式 默认是jar
4.name :项目描述名
    url:项目的地址
    description:项目描述
    developers:开发人员列表
    licenses:许可证
    organization:组织信息
5.dependencies列表
依赖范围:
 compile:默认范围,编译测试运行都有效
 provided:在编译和测试时有效
 runtime:在测试和运行时有效
 test:只在测试时有效,典型的是Junit
 system:在编译和测试时有效,与本机系统关联,可移植性差
 import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置
:设置依赖是否可选 默认FALSE
:排除依赖传递列表,例如A依赖B,B依赖C,那么在项目A中会导入B和C,但是只想导入B,则可以在这里添加C的坐标,使得C不被导入
6.dependencyManagement依赖管理,仅仅启到定义的作用,用于定义parent,子模块继承。
7.build 构建行为提供相应的支持
plugins插件列表
8.
 可以指定多个模块一起编译
    
    

不同版本的构件 1.短路优先 2.先声明先优先,如果路径长度相同,则谁先声明,先解析谁 ______

新建Maven项目,在Filter处选择webapp 配置pom.xml加入Servlet 配置jetty或者Tomcat服务器

4.0.0
    com.imooc.webdemo
    webdemo
    war
    0.0.1-SNAPSHOT
    webdemo Maven Webapp
    http://maven.apache.org
    
        
            junit
            junit
            4.10
            test
        
    <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>

学习感悟:简单的了解了Maven的用途和使用方法。体会到了用Maven来构建项目的方便之处。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读