Maven的简单使用一

Maven

maven的命令格式如下:

mvn [plugin-name]:[goal-name]

该命令的意思是:执行“plugin-name”插件的“goal-name”目标(或者称为动作)。
https://blog.csdn.net/moshenglv/article/details/52027106

Maven的默认中央仓库:

这里写图片描述
当构建一个Maven项目时,首先检查pom.xml文件以确定依赖包的下载位置,执行顺序如下:

1、从本地资源库中查找并获得依赖包,如果没有,执行第2步。

2、从Maven默认中央仓库中查找并获得依赖包(http://repo1.maven.org/maven2/),如果没有,执行第3步。

3、如果在pom.xml中定义了自定义的远程仓库,那么也会在这里的仓库中进行查找并获得依赖包,如果都没有找到,那么Maven就会抛出异常。

默认中央仓库的地址:

1、http://repo1.maven.org/maven2/

2、以上地址还配有搜索页面:http://search.maven.org/

3、如果想要向中央仓库提交自己的依赖包,可以很肯定的告诉你,此功能可以实现;参考:http://www.cnblogs.com/EasonJim/p/6671419.html

maven创建java项目:

https://blog.csdn.net/u012660464/article/details/53158776

maven查看插件信息:
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-archetype-plugin
根据Goal Prefix得知,这个插件有别名,所以就可以使用别名
mvn help:describe -Dplugin=archetype
这里写图片描述

比如使用archetype的generate目标创建最简单的项目
mvn archetype:generate

但是它却很慢,因为:
这里写图片描述

使用本地的原型文件
所以提前下载archetype-catalog.xml
https://repo.maven.apache.org/maven2/archetype-catalog.xml
下载好以后放在C:\Users\Mustang.m2\repository\目录下
https://www.cnblogs.com/buhaiqing/archive/2012/11/04/2754187.html

然后输入:mvn archtype:generate -DarchetypeCatalog=local
使用本地的archetype-catalog.xml
但是目标有2000多条,太多了怎么办?

使用maven内置的原型文件
mvn archetype:generate -DarchetypeCatalog=internal
只有七个目标
使用第七个项目模板
这里写图片描述
创建后的项目架构
这里写图片描述

maven导入eclipse

无法导入,因为用maven创建的项目没有.project 和 .classpath 文件
这里写图片描述

cmd 中输入mvn help:describe -Dplugin=eclipse
发现eclipse:eclipse命令能创建.project 和 .classpath 文件
这里写图片描述

cmd 切到项目根目录
这里写图片描述

生产了这两个文件,这样eclipse就能识别order项目
这里写图片描述

如果导入的项目报错,检查是否有M2_REPO 变量,如果没有就如下操作:
这里写图片描述
这里写图片描述

maven导入idea

首先删除刚才生产的eclipse的配置文件
进入order项目输入 mvn eclipse:clean
然后使用 mvn help:describe -Dplugin=idea 查看目标信息
使用 idea:idea 然后生成的idea的配置文件
这里写图片描述

maven编译:

进入项目根目录输入 mvn compiler:compile
这里写图片描述

maven测试:

mvn compiler:testCompile 编译测试java文件
mvn surefire:test 运行测试class文件
执行surefire:test 必须要经过编译后的class文件才行
这里写图片描述
这里写图片描述
这里运行了两个Test测试单元
这里写图片描述
运行一个Test测试单元
这里写图片描述

Maven生命周期:
https://blog.csdn.net/luanlouis/article/details/50492163
有三个内置的生命周期:默认(default),清洁(clean)和站点(site)。
默认构建生命周期(Default Lifeclyle): 该生命周期表示这项目的构建过程,定义了一个项目的构建要经过的不同的阶段。

清理生命周期(Clean Lifecycle): 该生命周期负责清理项目中的多余信息,保持项目资源和代码的整洁性。一般拿来清空directory(即一般的target)目录下的文件。

站点管理生命周期(Site Lifecycle) :向我们创建一个项目时,我们有时候需要提供一个站点,来介绍这个项目的信息,如项目介绍,项目进度状态、项目组成成员,版本控制信息,项目javadoc索引信息等等。站点管理生命周期定义了站点管理过程的各个阶段。

这里写图片描述

执行生命周期compile:mvn compile
这里写图片描述

Maven命令分类:插件命令和生命周期命令
生命周期阶段命令是插件命令的有序集合。
插件命令是单独的,生命周期命令是把很多插件命令组合在一起,是固定的,比较省事,但是插件命令更灵活。

maven打包

mvn package
但是如果想打包出来的文件包含第三方jar包就使用插件:maven-shade-plugin 需要在pom.xml配置
这里写图片描述
然后在cmd使用mvn package
这里写图片描述

打包为可执行jar
META-INF/MANIFEST.MF 文件中,配置如下
Main-Class:xxx.xxx.xxx类名
http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#ManifestResourceTransformer
这里写图片描述

然后进入target目录cmd运行
D:\projects\order\target>java -jar order-1.0-SNAPSHOT.jar

pom.xml结构

    <!-- 第三方依赖包 -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
    </dependencies>

    <!-- 把shade插件绑定到package生命周期里面 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.1.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <manifestEntries>
                                        <Main-Class>com.oops.eshop.Pay</Main-Class>
                                        <X-Compile-Source-JDK>1.8</X-Compile-Source-JDK>
                                        <X-Compile-Target-JDK>1.8</X-Compile-Target-JDK>
                                    </manifestEntries>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

<!-- 指定当前pom的版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 坐标  -->
<groupId>反写的公司网址+项目名</groupId>
<artifactId>项目名+模块名</artifactId>
<!-- 第一个0表示大版本号
       第二个0表示分支版本号
       第三个0表示小版本号
     0.0.1
     snapshot快照
     alpha内部测试
     beta公测
     Release稳定
     GA正式发布 -->
<version></version>
<!-- 默认是jar
     war zip pom -->
<packaging></packaging>
<!-- 项目描述名 -->
<name></name>
<!-- 项目地址 -->
<url></url>
<!-- 项目描述 -->
<description></description>
<!-- 开发人员表 -->
<developers></developers>
<!-- 许可证信息 -->
<license></license>
<!-- 组织信息 -->
<organization></organization>

<!-- 依赖 -->
<dependencies>
    <dependency>
        <groupId></groupId>
        <artifactId></artifactId>
        <version></version>
        <!-- 依赖范围  这个jar只存在于测试的范围
             compile:默认范围,编译测试运行都有效
             provided:在编译和测试时都有效 
             runtime:在测试和运行时有效
             test:在测试范围有效 比如junit
             system:与本机系统相关联,可移植性差
             import:导入的范围,它只是用在dependencyManagement中,表示从气他的pom中导入dependecy的配置-->
        <scope>test</scope> 
        <!-- 设置依赖是否可选 -->
        <optional></optional>
        <!-- 排除依赖传递列表 -->
        <exclusions>
            <exclusion>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<!-- 依赖管理,定义在父模块,给子模块用的 -->
<dependencyManagement>
    <dependencies>
        <dependency></dependency>
    </dependencies>
 </dependencyManagement>

<build>
    <!-- 插件列表  -->
    <plugin>
        <groupId></groupId>
        <artifactId></artifactId>
        <version></version>

    </plugin>
</build>
<!-- 用于子模块对父模块的继承 -->
<parent></parent>
<!-- 聚合运行多个maven项目 -->
<modules>
    <module></module>
</modules>

在eclipse使用maven创建项目

这里写图片描述
这里写图片描述

编译
这里写图片描述
这里写图片描述

如果报错:
maven的[WARNING] Using platform encoding (UTF-8 actually) to copy filter
在项目中的pom.xml添加

 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

这里写图片描述

如果报错:
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile
Installed JREs的环境变量jre设置为jdk
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值