Ant需要travis服务器上的junit.jar

时间:2017-08-19 09:08:11

标签: java junit ant travis-ci

当我跑ant test时,一切都很酷,但是当特拉维斯运行相同的命令时我得到了

$ ant test

  

构建文件:   /home/travis/build/AwesomeTeamPlayer/event-receiver/build.xml

     

编译:

[mkdir] Created dir: /home/travis/build/AwesomeTeamPlayer/event-receiver/build
[javac] /home/travis/build/AwesomeTeamPlayer/event-receiver/build.xml:28:
     

警告:' includeantruntime'没有设定,默认为   build.sysclasspath =最后;对于可重复的构建,设置为false       [javac]将12个源文件编译为/ home / travis / build / AwesomeTeamPlayer / event-receiver / build       [javac]注:/home/travis/build/AwesomeTeamPlayer/event-receiver/src/EventReceiver/EventsCollection.java   使用未经检查或不安全的操作。       [javac]注意:使用-Xlint重新编译:取消选中以获取详细信息。

     

测试编译:

[mkdir] Created dir: /home/travis/build/AwesomeTeamPlayer/event-receiver/build/test
[javac] Compiling 3 source files to /home/travis/build/AwesomeTeamPlayer/event-receiver/build/test 
     

试验:

     

建立失败

     

/home/travis/build/AwesomeTeamPlayer/event-receiver/build.xml:42:

     

问题:无法创建任务或输入junit

     

原因:上课   找不到org.apache.tools.ant.taskdefs.optional.junit.JUnitTask。

    This looks like one of Ant's optional components. Action: Check that the appropriate optional JAR exists in
    -/usr/share/ant/lib
    -/home/travis/.ant/lib
    -a directory added on the command line with the -lib argument 
     

不要惊慌,这是一个常见的问题。

     

最常见的原因是缺少JAR。

     

这不是一个错误;这是一个配置问题

当我在.travis.yml文件中将ant test更改为ant test -lib ./lib/junit-4.12.jar时,我收到相同的错误消息:/

.travis.yml

language: java
jdk:
  - oraclejdk8

services:
  - docker

script: ant test -lib ./lib/junit-4.12.jar

的build.xml

<?xml version="1.0" encoding="iso-8859-2"?>
<project name="Project name" basedir="." default="compile">

    <property name="src.dir" value="./src"/>
    <property name="build.dir" value="./build"/>
    <property name="lib.dir" value="./lib"/>
    <property name="test.dir" value="./tests"/>
    <property name="test.build.dir" value="./build/test"/>

    <path id="classpath.compile">
        <pathelement location="${lib.dir}/amqp-client-4.0.2.jar"/>
        <pathelement location="${lib.dir}/json-20170516.jar"/>
        <pathelement location="${lib.dir}/slf4j-api-1.7.25.jar"/>
        <pathelement location="${lib.dir}/slf4j-simple-1.7.25.jar"/>
        <pathelement location="${build.dir}"/>
    </path>

    <path id="classpath.test">
        <pathelement location="${lib.dir}/mockito-all-1.10.19.jar"/>
        <pathelement location="${lib.dir}/junit-4.12.jar"/>
        <pathelement location="${lib.dir}/hamcrest-core-1.3.jar"/>
        <pathelement location="${build.dir}"/>
    </path>

    <target name="compile" depends="">
        <delete dir="${build.dir}" />
        <mkdir dir="${build.dir}"/>
        <javac srcdir="${src.dir}" destdir="${build.dir}">
            <classpath refid="classpath.compile"/>
        </javac>
    </target>

    <target name="test-compile" depends="compile">
        <mkdir dir="${test.build.dir}"/>
        <javac srcdir="${test.dir}" destdir="${test.build.dir}" includeantruntime="false">
            <classpath refid="classpath.test"/>
            <classpath refid="classpath.compile"/>
        </javac>
    </target>

    <target name="test" depends="test-compile">
        <junit printsummary="on" haltonfailure="yes" fork="true">
            <classpath>
                <path refid="classpath.test"/>
                <path refid="classpath.compile"/>
                <pathelement location="${test.build.dir}"/>
            </classpath>
            <formatter type="brief" usefile="false" />
            <batchtest>
                <fileset dir="${test.dir}" includes="**/*Test.java" />
            </batchtest>
        </junit>
    </target>

    <target name="test-integration" depends="test-compile">
        <junit printsummary="on" haltonfailure="yes" fork="true">
            <classpath>
                <path refid="classpath.test"/>
                <path refid="classpath.compile"/>
                <pathelement location="${test.build.dir}"/>
            </classpath>
            <formatter type="brief" usefile="false" />
            <batchtest>
                <fileset dir="${test.dir}" includes="integration/**/*Test.java" />
            </batchtest>
        </junit>
    </target>
</project>

lib 目录中我有

  • amqp-client-4.0.2.jar
  • hamcrest-core-1.3.jar
  • JS​​ON-20170516.jar
  • junit-4.12.jar
  • mockito-all-1.10.19.jar
  • SLF4J-API-1.7.25.jar
  • SLF4J-简单1.7.25.jar

2 个答案:

答案 0 :(得分:0)

我弄清楚要做什么。我添加了

before_script:
   - sudo apt-get install ant-optional

这解决了我的问题;)

答案 1 :(得分:0)

https://docs.travis-ci.com/user/installing-dependencies/所述:

  

要安装标准中未包含的Ubuntu软件包   精确,可靠,亲密或仿生分布,请在   graph的{​​{1}}步骤。

这意味着将以下内容添加到您的 .travis.yml 文件中:

before_install