使用Maven、Eclipse与travis-ci进行在线build操作详解

1.关于Maven的介绍:

Java世界中主要有三大构建工具:Ant、Maven和Gradle
现如今用得比较多的就是gradle,Maven用得次数也还可以,Ant基本已经绝迹了

 当然Maven除了构建的功能以外,还有一些项目管理等等其他功能,这里不再赘述。

 

2.Maven依赖管理系统

我们编写一个java项目,可能会需要使用到各种各样的包,而build过程中我们是需要这些包的,因此我们必须在Maven中定义依赖关系

在Java世界中,可以用groupId、artifactId、version组成的Coordination(坐标)唯一标识一个依赖。

任何基于Maven构建的项目自身也必须定义这三项属性,生成的包可以是Jar包,也可以是war包或者ear包。

以junit为例,依赖关系表示如下:

<dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.12</version>
 <scope>test</scope>
</dependency>

关于包的依赖关系书写,可以在:http://mvnrepository.com/ 这个网站中找到,在最上面的搜索栏输入包名,就可以得到依赖关系的书写方法了

 

 

3.travis-ci介绍

持续集成:Continuous Integration,简称CI,意思是,在一个项目中,任何人对代码库的任何改动,都会触发CI服务器自动对项目进行构建,自动运行测试,甚至自动部署到测试环境。这可以理解成为一种坚持的方法,在进行代码的改动后,利用travis-ci进行在线build,如果成功则说明改动没有问题,否则说明修改存在一些错误。那为什么不能在自己电脑上debug而需要使用travis-ci呢?这是需要作为一个验证,可能程序运行依赖了本地有的环境配置,而用户在使用你的程序,由于他的本地没有配置,因此程序无法运行。如果在线build成功,那么程序则可以在不依赖本地环境下运行。

 

4.编写.travis.yml文件

 由于build需要.travis.yml文件,在项目根目录下创建文件并编写内容如下,把文件名改成.travis.yml

那么该文件就编写完成了

language: java

jdk:
  - oraclejdk8

 

5.获得pom.xml文件

 

打开eclipse,右键项目,选择Configure,再选择Convert to Maven Project。

这样会自动生成一个pom.xml文件,这时候只需要进行依赖关系的添加就可以了

添加过程:

打开pom.xml,在之前提到的网站http://mvnrepository.com/中找到自己需要的包,复制<dependency></dependencies>到pom.xml中,并在其前后要加上<dependencies></dependencies>。

示例如下

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.1.0</version>
        <scope>test</scope>
    </dependency>
 </dependencies>

 

6.中途遇到的问题

 可能会出现如下错误

build failure: error: unmappable character for encoding UTF-8

 我的解决办法是将程序中所有的中文都改成英文(包括注释)

但是还可以将字符编码改成cp936 ,GBK等等,也可以改正此错误

 

另外,由于大部分人使用junit都是junit5,但是在Maven依赖关系查询中直接搜索只会搜索出junit4的包

因此使用junit5需要搜索jupiter,再将其依赖关系到pom.xml

为什么junit4与5的包名不同,这需要进一步研究。

 

posted @ 2018-04-08 22:21  masteryellow  阅读(1214)  评论(0编辑  收藏  举报