软件构造 Maven IDEA Blog-2

软件构造 Maven IDEA Blog-2


文章转自@Zim_hit未经允许不得转载



关于这次blog

写这次blog的目的,主要是希望可以看到这个blog的童鞋们可以实现针对HIT的软件构造课程,实现第1次试验的脱离eclipse的build,主要使用的工具IDEA(可选),Travis-CI, Maven。

什么是Maven

在软件构造的2-2节中,我们这样“狭义”地定义一下Build,即将三个维度之一的从Build time 到 Run time。借助自动化的工具完成软件构造各个阶段的活动,来提高效率。而Maven正是这其中的一项工具(tools),除了Maven还有Ant,Gradle等等。这里承接上次Blog,在浅尝各个工具后,决定使用Maven进行专攻。

如何安装Maven

Maven安装其实很简单,主要有下面几个步骤(无论使用何种IDE,都不能跳过这个步骤)

  1. 从官网下载Maven,然后解压到某个文件夹中。
    下载Maven
  2. 配置环境变量,这一点对于已经配置过Java环境变量的童鞋来说并不困难,此处以Win10系统为例。需要配置M2_HOME和PATH两个环境变量。
    M2_HOME
    PATH
  3. 验证配置是否成功,在命令行中输入”mvn -version”,如果正确配置则有Maven Home和Java的位置版本等信息出现。
    mvn -version
  4. 可以改变默认的仓库的位置,参见菩提树下的杨过的相关教程。

如何使用Maven

其实最简单的办法还是借用某一种IDE来使用Maven,这样编辑起来更方便而且更容易上手。这里使用IDEA来进行辅助工具来进行演示,但这不是必须的,使用命令行也完全可以实现所有必须的功能。
以下有三种方法,我们将分别进行解释。
1. 在已有的项目加上Maven的支持,这也是我一开始采用的办法,只需要在项目名称上右键,选择“Add Framework support”,就会有选项可以选择maven。然后就可以利用已生成的pom.xml自己添加所需要的支持。
2. 新建新的Maven项目,然后导入需要的源文件,这时IDEA使用Maven会默认使用Maven进行build,会看到Maven特有的编译成功的结果。
3. 直接利用命令行进行Maven项目的编译,这里不赘述一些基本过程,参见已有的blog菩提树下的杨过的相关教程。

一些“坑”

刚刚Maven自动生成的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>edu.hit</groupId>
  <artifactId>Lab1-1160300314</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Lab1-1160300314</name>
  <url>http://maven.apache.org</url>

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

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

我们就针对这样一个pom.xml来讲解里面带的坑。

  • 首先如果你在直接运行,就会提示找不到”org.junit.*”类。这是因为Junit导入的版本问题,不是我们需要使用的Junit4,而是更古老的版本Junit3.所以我们需要将这个依赖库改为:
<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 如果你在源文件中使用了类似List<String> list = new Arraylist<>();这样的语句,那么在build的时候还会看到所有这样的语句均会报错,这是由于Maven默认使用的是JDK1.5,不支持这样的语句。而使用低版本的JDK是因为在很多服务器上仍然使用的是JDK5或者更低的版本,所以为了支持这样的服务器,Maven默认使用JDK5。为了使用高版本的JDK,我们可以在<dependencies>再增加以下代码,就可以使用jdk1.8。
<build>
        <defaultGoal>compile</defaultGoal>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 另外添加依赖库的办法,可以使用Maven的仓库管理,直接找到需要的jar包,然后在pom.xml增加即可,此处以增加javax.json-1.0.jar为例。
    javax.json-1.0.jar
    然后直接点击就可以粘在<dependencies>里即可
<!-- https://mvnrepository.com/artifact/org.glassfish/javax.json -->
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.0</version>
</dependency>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这样下来应该就可以使用了,记得文件组织格式一定要严格遵守maven所给出的形式!,build应该可以通过了(如果不能通过,见文章最后)。
再添加.travis.yml文件并将pom.xml和其一起push进仓库,再进入Travis-CI进行在线build。

language: java

jdk:
  - oraclejdk8
 
 
  • 1
  • 2
  • 3
  • 4

编译成功的截图如下图所示:
build-success


写在最后

如果刚刚还不能编译成功,我遇到的一种情况是因为我的编码格式出现了问题,我所有的源码都使用的UTF-8格式,在使用的时候会莫名无法解析,显示这个错误Error: unmappable character for encoding UTF8 during maven compilation,在Stack Overflow上面有一个解答,但是答案不能使用,需要改成<encoding>Cp1252</encoding>才能正常使用,不知道这里有什么问题,希望了解的童鞋给我私信。

另外对于学生,利用edu.cn结尾的邮箱真的有很大优惠,比如免费使用IDEA等jetbrain的全家桶,免费使用Travis-CI中对GitHub里面Private仓库的在线build,希望大家能够充分利用工具。
PS:获取Travis-CI的教育优惠可以利用GitHub教育版去“get the pack”。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值