如何用travis和ant运行javafx项目?

时间:2017-02-09 13:05:41

标签: java intellij-idea ant travis-ci

我是JavaFx的新手并且在项目设置方面苦苦挣扎。到目前为止,我的应用程序只做了“Hello World”。但是我想为我的项目自动化构建并决定与Travis一起,在我推动时构建我的Github-Repo。所以我在IntelliJ-IDE中创建了JavaFx应用程序并使用IntelliJ的Generate Ant来创建ant文件,因为Travis需要Maven,Gradle或Ant。

这将我带到这个build.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<project name="abstractor" default="all">


  <property file="abstractor.properties"/>
  <!-- Uncomment the following property if no tests compilation is needed -->
  <property name="skip.tests" value="true"/>

  <!-- Compiler options -->

  <property name="compiler.debug" value="on"/>
  <property name="compiler.generate.no.warnings" value="off"/>
  <property name="compiler.args" value=""/>
  <property name="compiler.max.memory" value="700m"/>
  <patternset id="ignored.files">
    <exclude name="**/*.hprof/**"/>
    <exclude name="**/*.pyc/**"/>
    <exclude name="**/*.pyo/**"/>
    <exclude name="**/*.rbc/**"/>
    <exclude name="**/*.yarb/**"/>
    <exclude name="**/*~/**"/>
    <exclude name="**/.DS_Store/**"/>
    <exclude name="**/.git/**"/>
    <exclude name="**/.hg/**"/>
    <exclude name="**/.svn/**"/>
    <exclude name="**/CVS/**"/>
    <exclude name="**/__pycache__/**"/>
    <exclude name="**/_svn/**"/>
    <exclude name="**/vssver.scc/**"/>
    <exclude name="**/vssver2.scc/**"/>
  </patternset>
  <patternset id="library.patterns">
    <include name="*.war"/>
    <include name="*.swc"/>
    <include name="*.zip"/>
    <include name="*.egg"/>
    <include name="*.ane"/>
    <include name="*.jar"/>
    <include name="*.ear"/>
  </patternset>
  <patternset id="compiler.resources">
    <exclude name="**/?*.java"/>
    <exclude name="**/?*.form"/>
    <exclude name="**/?*.class"/>
    <exclude name="**/?*.groovy"/>
    <exclude name="**/?*.scala"/>
    <exclude name="**/?*.flex"/>
    <exclude name="**/?*.kt"/>
    <exclude name="**/?*.clj"/>
  </patternset>

  <!-- JDK definitions -->

  <property name="jdk.bin.1.8" value="${jdk.home.1.8}/bin"/>
  <path id="jdk.classpath.1.8">
    <fileset dir="${jdk.home.1.8}">
      <include name="jre/lib/charsets.jar"/>
      <include name="jre/lib/deploy.jar"/>
      <include name="jre/lib/ext/access-bridge-64.jar"/>
      <include name="jre/lib/ext/cldrdata.jar"/>
      <include name="jre/lib/ext/dnsns.jar"/>
      <include name="jre/lib/ext/jaccess.jar"/>
      <include name="jre/lib/ext/jfxrt.jar"/>
      <include name="jre/lib/ext/localedata.jar"/>
      <include name="jre/lib/ext/nashorn.jar"/>
      <include name="jre/lib/ext/sunec.jar"/>
      <include name="jre/lib/ext/sunjce_provider.jar"/>
      <include name="jre/lib/ext/sunmscapi.jar"/>
      <include name="jre/lib/ext/sunpkcs11.jar"/>
      <include name="jre/lib/ext/zipfs.jar"/>
      <include name="jre/lib/javaws.jar"/>
      <include name="jre/lib/jce.jar"/>
      <include name="jre/lib/jfr.jar"/>
      <include name="jre/lib/jfxswt.jar"/>
      <include name="jre/lib/jsse.jar"/>
      <include name="jre/lib/management-agent.jar"/>
      <include name="jre/lib/plugin.jar"/>
      <include name="jre/lib/resources.jar"/>
      <include name="jre/lib/rt.jar"/>
    </fileset>
  </path>

  <property name="project.jdk.home" value="${jdk.home.1.8}"/>
  <property name="project.jdk.bin" value="${jdk.bin.1.8}"/>
  <property name="project.jdk.classpath" value="jdk.classpath.1.8"/>

  <!-- Modules -->


  <!-- Module Abstractor -->

  <dirname property="module.abstractor.basedir" file="${ant.file}"/>


  <property name="module.jdk.home.abstractor" value="${project.jdk.home}"/>
  <property name="module.jdk.bin.abstractor" value="${project.jdk.bin}"/>
  <property name="module.jdk.classpath.abstractor" value="${project.jdk.classpath}"/>

  <property name="compiler.args.abstractor" value="-encoding UTF-8 -source 8 -target 8 ${compiler.args}"/>

  <property name="abstractor.output.dir" value="${module.abstractor.basedir}/out/production/Abstractor"/>
  <property name="abstractor.testoutput.dir" value="${module.abstractor.basedir}/out/test/Abstractor"/>

  <path id="abstractor.module.bootclasspath">
    <!-- Paths to be included in compilation bootclasspath -->
  </path>

  <path id="abstractor.module.production.classpath">
    <path refid="${module.jdk.classpath.abstractor}"/>
  </path>

  <path id="abstractor.runtime.production.module.classpath">
    <pathelement location="${abstractor.output.dir}"/>
  </path>

  <path id="abstractor.module.classpath">
    <path refid="${module.jdk.classpath.abstractor}"/>
    <pathelement location="${abstractor.output.dir}"/>
  </path>

  <path id="abstractor.runtime.module.classpath">
    <pathelement location="${abstractor.testoutput.dir}"/>
    <pathelement location="${abstractor.output.dir}"/>
  </path>

  <patternset id="excluded.from.module.abstractor">
    <patternset refid="ignored.files"/>
  </patternset>

  <patternset id="excluded.from.compilation.abstractor">
    <patternset refid="excluded.from.module.abstractor"/>
  </patternset>

  <path id="abstractor.module.sourcepath">
    <dirset dir="${module.abstractor.basedir}">
      <include name="src"/>
    </dirset>
  </path>

  <target name="compile.module.abstractor" depends="compile.module.abstractor.production,compile.module.abstractor.tests" description="Compile module Abstractor"/>

  <target name="compile.module.abstractor.production" description="Compile module Abstractor; production classes">
    <mkdir dir="${abstractor.output.dir}"/>
    <javac destdir="${abstractor.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.abstractor}/javac">
      <compilerarg line="${compiler.args.abstractor}"/>
      <bootclasspath refid="abstractor.module.bootclasspath"/>
      <classpath refid="abstractor.module.production.classpath"/>
      <src refid="abstractor.module.sourcepath"/>
      <patternset refid="excluded.from.compilation.abstractor"/>
    </javac>

    <copy todir="${abstractor.output.dir}">
      <fileset dir="${module.abstractor.basedir}/src">
        <patternset refid="compiler.resources"/>
        <type type="file"/>
      </fileset>
    </copy>
  </target>

 <target name="compile.module.abstractor.tests" depends="compile.module.abstractor.production" description="compile module Abstractor; test classes" unless="skip.tests"/>

  <target name="clean.module.abstractor" description="cleanup module">
    <delete dir="${abstractor.output.dir}"/>
    <delete dir="${abstractor.testoutput.dir}"/>
  </target>

  <target name="init" description="Build initialization">
  </target>

  <target name="clean" depends="clean.module.abstractor" description="cleanup all"/>

  <target name="build.modules" depends="init, clean, compile.module.abstractor" description="build all modules"/>

  <target name="all" depends="build.modules" description="build all"/>
</project>

此外,我创建了以下Travis-Config(.travis.yml):

language: java
sudo: false
jdk:
- oraclejdk8
email: false
branches:
 only:
 - master
ant: run

我的问题是特拉维斯总是尝试ant test,这不是我的项目中创建的。以下是Travis-CI的精确输出:

$ java -Xmx32m -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
$ javac -J-Xmx32m -version
javac 1.8.0_31
2.20s$ ant test
Buildfile: /home/travis/build/sebi5000/Abstractor/build.xml
BUILD FAILED
Target "test" does not exist in the project "abstractor". 
Total time: 1 second
The command "ant test" exited with 1.
Done. Your build exited with 1.

我对ant并不了解,只是使用它,因为IntelliJ可以为我生成文件。所以我尝试了几个例子,例如评论包含单词'test'的所有行。此外,我在build.xml中取消注释此属性:

<property name="skip.tests" value="true"/>

因为IntelliJ告诉我这会跳过测试编译。

无论我尝试什么,我总是想出同样的结果。有人可以帮我吗?我确信这很简单,但我不明白。

0 个答案:

没有答案