首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在eclipse java项目中包括maven-ant构建库。

在eclipse java项目中包括maven-ant构建库。
EN

Stack Overflow用户
提问于 2015-07-02 08:39:32
回答 1查看 1K关注 0票数 0

我正在与月食蚂蚁的构建做斗争。

我的工作就像下面的台阶。

  • GUI新java项目
  • 在项目顶部文件夹中添加build.xml
  • 运行ant文件并成功!
  • 尝试编写代码,但不知为何自动完成不起作用。(猜测eclipse不能读取maven-ant dependency.path)

所以我试过了。

  • 将构建路径中的~/.m2/repository添加为External class folder --不起作用--在我看来,包含整个文件夹是很奇怪的。我目前的项目,我需要很少的库,但它有完整的库,我在其他项目中使用。
  • 使用build.xml (如Want an eclipse java project to run ant build files automatically )添加构建器--两者都不起作用。

如何正确地添加这个maven-ant库?谢谢你分享你的经验和答案

===========额外信息====================

这是我的build.xml

代码语言:javascript
复制
<?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>

这就是我的项目。

代码语言:javascript
复制
src
-- source codes (includes hibernate.cfg.xml)
classes
-- compiled classes
data
-- logs and queries
build.xml

另外,我写了一本名为“Harness Hibernate”的书,作者是O‘’reilly的James。

再次感谢b

EN

回答 1

Stack Overflow用户

发布于 2015-07-02 18:34:18

对于您想要做的事情,您需要在声明中使用filesetId和versionsId="dependency.versions“:

代码语言:javascript
复制
 <artifact:dependencies filesetId="dependency.fileset" versionsId="dependency.versions"

然后添加如下所示的复制任务:

代码语言:javascript
复制
 <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>

To=“扁平化”会将依赖项分解到一个文件夹中,然后您可以将该文件夹包含在eclipse项目的类路径或需要它的任何地方。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31179572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档