2015-07-02 5 views
0

Я борюсь с maven-ant build с затмением.include maven-ant build libs в проекте eclipse java

Я работал как внизу.

  • [GUI] новый Java проект
  • добавить build.xml в верхней папке проекта
  • запустить муравей файл и УСПЕХА!
  • пытается код, но почему-то авто завершение не работает. (Угадывание затмение не может читать Maven-муравей dependency.path)

Так что я попробовал.

  • добавить ~/.m2/repository в путь сборки как External class folder - не работает - это выглядит странно для меня, чтобы включить всю эту папку. В моем текущем проекте мне нужны небольшие библиотеки, но у меня есть целые библиотеки, которые я использую в других проектах.
  • добавить строителей с build.xml как Want an eclipse java project to run ant build files automatically - не работает ни.

Как я могу правильно добавить эти библиотеки maven-ant? Спасибо за обмен своего опыта и ответы XD

=========== Дополнительной информации ====================

Этого это мой build.xml.

<?xml version="1.0" encoding="UTF-8"?> 
<project name="HibernateEx2" default="db" basedir="." 
    xmlns:artifact="antlib:org.apache.maven.artifact.ant"> 

    <property name="source.root" value="src"/> 
    <property name="class.root" value="classes"/> 
    <property name="data.dir" value="data"/> 

    <artifact:dependencies pathId="dependency.classpath"> 
     <dependency groupId="hsqldb" artifactId="hsqldb" version="1.8.0.10"/> 

     <dependency groupId="org.hibernate" artifactId="hibernate-core" version="4.3.10.Final"> 
      <exclusion groupId="javax.transaction" artifactId="jta"/> 
     </dependency> 

     <!-- 3.2.4.GA - After hibernate4 need upgrade hibernate-tools --> 
     <dependency groupId="org.hibernate" artifactId="hibernate-tools" version="4.3.1.CR1"/> 
     <dependency groupId="org.apache.geronimo.specs" artifactId="geronimo-jta_1.1_spec" version="1.1.1"/> 

     <!-- java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory --> 
     <dependency groupId="commons-logging" artifactId="commons-logging" version="1.2"/> 
     <dependency groupId="log4j" artifactId="log4j" version="1.2.17"/> 
     <!-- java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder --> 
     <dependency groupId="org.slf4j" artifactId="slf4j-log4j12" version="1.7.12"/> 

    </artifact:dependencies> 

    <path id="project.class.path"> 
     <pathelement location="${class.root}"/> 
     <path refid="dependency.classpath" /> 
    </path> 

    <!-- Explaining how to use hibernate --> 
    <taskdef name="hibernatetool" 
     classname="org.hibernate.tool.ant.HibernateToolTask" 
     classpathref="project.class.path"/> 

    <target name="db" description="Run HSQLDB database management UI against the database file -- use when application is not running"> 
     <java classname="org.hsqldb.util.DatabaseManager" fork="yes"> 
      <classpath refid="project.class.path"/> 
      <arg value="-driver"/> 
      <arg value="org.hsqldb.jdbcDriver"/> 
      <arg value="-url"/> 
      <arg value="jdbc:hsqldb:${data.dir}/music/"/> 
      <arg value="-user"/> 
      <arg value="sa"/> 
     </java> 
    </target> 

    <target name="print-classpath" description="Show the dependency class path"> 
     <property name="class.path" refid="dependency.classpath"/> 
     <echo>${class.path}</echo> 
    </target> 

    <!-- Generate java code --> 
    <target name="codegen" description="Generate Java source from the OR mapping files"> 
     <hibernatetool destdir="${source.root}"> 
      <configuration configurationfile="${source.root}/hibernate.cfg.xml"/> 
      <hbm2java/> 
     </hibernatetool> 
    </target> 

    <!-- Creating Sub drectories --> 
    <target name="prepare" description="Set up build structures"> 
     <mkdir dir="${class.root}"/> 
     <copy todir="${class.root}"> 
      <fileset dir="${source.root}"> 
       <include name="**/*.properties"/> 
       <include name="**/*.xml"/> 
      </fileset> 
     </copy> 
    </target> 

    <!-- Creating Schema for mapping files --> 
    <target name="schema" depends="prepare" description="Generate DB schema from the OR mappinf files"> 
     <hibernatetool destdir="${source.root}"> 
      <configuration configurationfile="${source.root}/hibernate.cfg.xml"/> 
      <hbm2ddl drop="yes"/> 
     </hibernatetool> 
    </target> 


    <!-- Compile Java --> 
    <!-- added includeantruntime="false" to javac, since terminal compile warning --> 
    <target name="compile" depends="prepare"> 
     <javac srcdir="${source.root}" destdir="${class.root}" 
      debug="on" optimize="off" deprecation="on" includeantruntime="false"> 
      <classpath refid="project.class.path"/> 
     </javac> 
    </target> 

    <target name="ctest" depends="compile"> 
     <java classname="org.owls.ht.CreateTest" fork="true"> 
      <classpath refid="project.class.path"/> 
     </java> 
    </target> 
</project> 

И вот как выглядит мой проект.

src 
-- source codes (includes hibernate.cfg.xml) 
classes 
-- compiled classes 
data 
-- logs and queries 
build.xml 

FYI, я делаю это с книгой под названием [[Harness Hibernate]] написана Джеймсом Elliot из O'Reilly.

Еще раз спасибо б

ответ

1

За то, что вы пытаетесь сделать, вам нужно filesetId и versionsId = «dependency.versions» в вашем объявлении:

<artifact:dependencies filesetId="dependency.fileset" versionsId="dependency.versions" 

Затем добавить задачу копирования, как так :

<copy todir="${lib.dir}"> 
    <fileset refid="dependency.fileset" /> 
    <mapper classpathref="maven-ant-tasks.classpath" 
     classname="org.apache.maven.artifact.ant.VersionMapper" 
     from="${dependency.versions}" to="flatten" /> 
</copy> 

к = «Свести» будет Flaten ваши зависимости в одной папке, то вы можете включить эту папку на пути к классам проекта Eclipse или там, где вам это нужно.