0
点赞
收藏
分享

微信扫一扫

Maven与Eclipse的整合和简单的Maven项目(二)


古语有云: 万恶淫为首,百善孝为先。 我们后辈当自勉。

上一章简单介绍了Maven的下载和配置(一),如果没有看过,​​请观看上一章​​

一. Maven的基本配置

Maven在上一章,已经配置好了,这一章,我们就可以利用 Maven进行开发了。 关于Maven的目录结构, pom.xml 的结构,坐标等,老蝴蝶会在讲过例子之后,再说这些内容。 开发的时候,还是用常见的Eclipse. 在高版本的 Eclipse中,已经自动集成了 Maven,但Maven版本太低,而且可能各个成员的Eclipse版本不同,导致Maven的版本不同,所以,一般都是用我们自己下载的Maven,不用Eclipse自带的。

在Maven开发之前,常常配置如下三个部分。

一.一 配置私有仓库的位置

maven可以管理很多个 jar包,这些jar包存放的位置叫做仓库, maven组织管理的仓库叫做中央仓库,我们自己管理的,下载在本地的仓库叫做私有仓库或者是本地仓库。 私有仓库的位置,默认放置在 C盘 用户目录下, 在老蝴蝶这儿,用户目录是 C:\Users\12905

会放置在 这儿的 /.m2/repository 下, 即 C:\Users\12905/.m2/repository 目录下。 C盘啊,亲亲,jar包啊,我们常常自定义 私有仓库的位置。

在M2_HOME 目录下的 config 文件夹里面, 找到 settings.xml 文件,在里面配置 私有仓库的位置。

<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<!-- interactiveMode
| This will determine whether maven prompts you when it needs input. If set to false,
| maven will use a sensible default value, perhaps based on some other setting, for
| the parameter in question.
|
| Default: true
<interactiveMode>true</interactiveMode>
-->

<!--添加的是这个位置: 私有仓库的位置-->
<localRepository>G:\Jar_repository</localRepository>
<!--添加结束-->

存放 在 G盘的 Jar_repository 文件目录下。

一.二 配置阿里云镜像

在maven配置jar包时,如果本地仓库有,那么就用本地仓库的,如果本地仓库没有,那么就从中央仓库下载,下载完成后放置在本地仓库,然后再从本地仓库进行引用。 在这个过程中,下载jar包是个问题,要从 http://repo1.maven.org/maven2/ 中进行下载,很明显,是个外国的网站,下载的速度比较慢, 所以常常用阿里云的镜像。 所谓的镜像,简单理解就是, 如果所有的下载都是从maven中央仓库进行下载,那么对其的访问将会增大,并且距离相对较远,所以下载速度会很慢,会在全世界各地都放置一些镜像,下载的时候从镜像那下载,各地的镜像会与中央仓库保持一致。 即 中央仓库有的,镜像那都有。 而中国的镜像网站,就是阿里。阿里是非常牛的。

镜像的单词 是mirror, 可以配置多个镜像,如果不配置,默认是中央仓库。

同样是修改 settings.xml 文件的内容。

<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<!--添加的是这个位置: 配置阿里云镜像 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!--添加结束-->
</mirrors>

一.三 配置JDK的版本

maven创建项目之后,默认的是1.5版本的jdk, 版本太低,故常常需要改变版本号。 你可以每一个文件都改变一下,也可以全局的改变版本。 这儿是全局的改变版本。 注意,版本号必须要与你本地的JDK的版本保持一致。 如老蝴蝶的版本号是 1.8,故全局配置时,也是1.8

同样是修改 settings.xml 文件的内容。 在 <profiles> 节点里面添加。

<profiles>
<!-- profile
| Specifies a set of introductions to the build process, to be activated using one or more of the
| mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
| or the command line, profiles have to have an ID that is unique.
|
| An encouraged best practice for profile identification is to use a consistent naming convention
| for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
| This will make it more intuitive to understand what the set of introduced profiles is attempting
| to accomplish, particularly when you only have a list of profile id's for debug.
|
| This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
<profile>
<id>jdk-1.4</id>

<activation>
<jdk>1.4</jdk>
</activation>

<repositories>
<repository>
<id>jdk14</id>
<name>Repository for JDK 1.4 builds</name>
<url>http://www.myhost.com/maven/jdk14</url>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
</repositories>
</profile>
-->
<!-- 在这儿添加: 配置全局 jdk -->
<profile>
<id>jdk18</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
<!--添加结束-->

这就是配置 settings.xml 文件的三个基本操作。

二 Eclipse 中配置 Maven

二.一 安装 Maven

打开 Eclipse , 选择 首选项, 找到 Maven ,选择Installations 选项

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置阿里云镜像

点击右侧的添加按钮,

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置阿里云镜像_02

选择路径,点击完成。

将 Maven版本由默认的,变成新添加的 3.5.4版本。 由标点1变成标点2 。 3.3.9版本是老蝴蝶以前使用的版本。

Maven与Eclipse的整合和简单的Maven项目(二)_maven_03

点击应用,安装完成。

二.二 配置Maven路径

继续找到Maven, 选择 User Settings 选项,找到全局的settings.xml 文件,即本地maven 路径/conf/settings.xml 文件, 也配置一下 当前用户的 settings.xml 文件, 配置好了之后,会自动更新仓库(4)的位置, 变成我们 一.一 配置的本地仓库的路径。 点击确定即可。

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_04

你可以不配置全局的路径,但一定要配置 当前用户的settings.xml 文件, 以当前用户配置的为主。 默认是 用户.m2\repository

二.三 展示 Maven仓库的视图

选择菜单 ‘窗口’, 选择视图 show-view, 选中其他,搜索 maven, 选择maven仓库,点击确定即可。

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置阿里云镜像_05

eclipse便会展示出 maven仓库的视图。

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置阿里云镜像_06

选中 本地仓库, 右键 rebuild Index, 便会更新仓库的索引,便可以看到 本地仓库所拥有的jar包了。 以后配置依赖的时候,会通过索引来快速定位。

Maven与Eclipse的整合和简单的Maven项目(二)_maven_07

三 . Eclipse 快速创建 一个 Jar项目。

Maven已经配置好了,接下来写一个简单的Jar项目,来实际操作一把。

三.一 新建 Maven类型的 Jar项目

打开 Eclipse, 新建—>其他---->找到Maven,选中 Maven Project

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置阿里云镜像_08

点击下一步,

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_09

勾选,创建一个简单的项目, 点击下一步

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置阿里云镜像_10

点击确定,就创建好一个 简单的 Maven项目了。

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_11

项目名称,就是我们刚才写的名称, HelloMaven. 上面有一个小图标,M, 表示的是 Maven项目的意思。

src下,有目录, 分别是 src/main/java, src/main/resources , src/test/main, src/test/resources, 还有一个 pom.xml 文件。

target 目录里面目前没有任何东西, 由以往经验可知, target是目标文件目录,里面放置编译好的class文件等。

pom.xml 文件的内容是:

<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yjl</groupId>
<artifactId>HelloMaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Hello</name>
<description>第一个简单的Maven Jar项目</description>
</project>

三.二 添加普通的 java类,进行测试和运行。

src/main/java 文件下,放置的是 java源代码, src/main/resources 目录下,放置的是 所用的配置文件,如 applicationContext.xml, mybatis-config.xml 文件, src/test/java 放置的是 测试java类, src/test/resources 放置的是测试资源。

1 . 创建 Hello 类

在 src/main/java 下,创建一个类 Hello, 所在的包是 com.yjl

package com.yjl;

public class Hello {
public static void main(String[] args) {
System.out.println("你好啊,两个蝴蝶飞");
}

public String getName(){
return "岳泽霖"; //返回老蝴蝶的名称,用于测试
}
}

测试的话,需要添加一个 junit 的jar包。 注意,这儿添加的是 jar包,以前添加的是 测试环境。

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置阿里云镜像_12

2 . 添加 junit 依赖

选中 pom.xml文件, 在视图中选择第二个依赖 Dependencies, 进行添加依赖

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_13

在本地仓库里面,搜索 junit, 选中 4.12 版本的,点击确定添加

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_14

这个时候,就将 junit 4.12 jar包及其依赖包添加进来了。

pom.xml 变成了

<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yjl</groupId>
<artifactId>HelloMaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Hello</name>
<description>第一个简单的Maven Jar项目</description>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>

dependency 是依赖的意思, 添加了junit 4.12的依赖。 关于pom.xml 文件,以后老蝴蝶会详细讲解的。

Maven Dependency 依赖中,添加了 junit 4.12 jar包和及依赖包 hamcrest-core-1.3.jar, 后面的路径是 其在本地仓库中的路径。

有图片。

Maven与Eclipse的整合和简单的Maven项目(二)_maven_15

junit 只是以 jar包的形式存在,并不是以 测试库的形式存在。

3 . 在src/test/main 写测试类 HelloTest

包名也为 com.yjl, 保证测试类与主类在同一路径下。

package com.yjl;

import static org.junit.Assert.assertSame;

import org.junit.Test;

public class HelloTest {

@Test
public void getNameTest(){
Hello hello=new Hello();
assertSame("岳泽霖",hello.getName());
}
}

三.三 利用 Maven 命令 运行 jar项目

在运行 HelloMaven 项目之前,先打开 HelloMaven项目的路径,看一下 命令行对 target 目标的影响。 在eclipse里面,我们直接看 target文件夹是不可以的,因为 target文件夹不能及时刷新。

刚开始, target文件夹是没有任何东西的。

选中 Hello.java 类,以 Java 运行程序进行运行,这时控制台输出打印 “你好啊,两个蝴蝶飞”

target 文件夹里面会放置 classes和test-classes两个文件夹,一个是源代码编译后的 Hello.class文件,一个是测试类编译后的HelloTest.class 文件。

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_16

接下来,就开始进行 maven 命令操作了。

1 .执行清除命令 clean

选中项目 HelloMaven, 右键 运行方式, 选择第5个 Maven build… (有三个点的,可以自己写命令)

Maven与Eclipse的整合和简单的Maven项目(二)_maven_17

在 Goals 里面, 输入命令 clean, 点击确定 (注意,这儿只输入 clean)

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_18

这时,控制台打印输出:

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置阿里云镜像_19

这时,再看一下工作空间,没有 target文件夹了。

Maven与Eclipse的整合和简单的Maven项目(二)_maven_20

2 . 执行编译命令 compile

同样,选中项目 HelloMaven, 右键 运行方式, 选择第5个 Maven build… (有三个点的,可以自己写命令)

在 Goals 里面,输入命令 compile ,点击确定

Maven与Eclipse的整合和简单的Maven项目(二)_maven_21

这时,控制台打印输出

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_22

再看一下工作空间,生成了 target文件夹

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置阿里云镜像_23

点击 target文件夹, 不仅仅有 classes文件夹,里面放置 Hello.class ,还生成了其他的文件夹。

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置阿里云镜像_24

3 . 执行测试命令 test

同样,选中项目 HelloMaven, 右键 运行方式, 选择第5个 Maven build… (有三个点的,可以自己写命令)

在 Goals 里面,输入命令 test ,点击确定

Maven与Eclipse的整合和简单的Maven项目(二)_maven_25

这时,控制台打印输出

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_26

再看一下工作空间,target 除了刚才的那些文件夹之外,又添加了几个。 test-classes, 里面放置了 HelloTest.class

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_27

4 . 执行打包命令 package

同样,选中项目 HelloMaven, 右键 运行方式, 选择第5个 Maven build… (有三个点的,可以自己写命令)

在 Goals 里面,输入命令 package ,点击确定

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_28

这时,控制台打印输出

Maven与Eclipse的整合和简单的Maven项目(二)_maven_29

再看一下工作空间,target 除了刚才的那些文件夹之外,又多了一个 jar包。

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_30

名称是: HelloMaven-0.0.1-SNAPSHOT.jar

只要把这个 jar包放在其他的项目中,就可以正常引入 Hello这个类。 即现在这个jar包是完全可以使用的。

5 .执行 安装命令 install

同样,选中项目 HelloMaven, 右键 运行方式, 选择第5个 Maven build… (有三个点的,可以自己写命令)

在 Goals 里面,输入命令 install ,点击确定

Maven与Eclipse的整合和简单的Maven项目(二)_maven_31

这时,控制台打印输出

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置阿里云镜像_32

再看一下工作空间,target 相对于 package来说,没有任何改变。 改变的是 本地仓库。

打开 G:\Jar_repository, 发现 在 com/yjl (公司名)/ HelloMaven项目, 里面有 jar包和相应的 pom.xml 文件,内容是与 eclipse里面的pom.xml 一样的,只是名称变成了 jar包名.pom

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_33

这上面就是 maven的一些常用命令,所造成的影响。

6 .在测试类 HelloTest.java 里面,把 返回值 改一下,改成错误的,再次测试呢,是什么结果呢?

@Test
public void getNameTest(){
Hello hello=new Hello();
assertSame("两个蝴蝶飞",hello.getName());
}

再次选择 Maven build …, 输入 test命令,点击确定,控制台打印输出:

Maven与Eclipse的整合和简单的Maven项目(二)_Maven配置私有仓库_34

测试不正确,说明是正常的自动化测试的。

关于maven的组织机构和 命令,在下一章节讲解。

谢谢!!!


举报

相关推荐

0 条评论