栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Ant,Ivy和JUnit中找不到类-build.xml中的错误?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Ant,Ivy和JUnit中找不到类-build.xml中的错误?


项目包含以下文件:

├── build.xml├── ivy.xml└── src    ├── main    │   ├── java    │   │   └── org    │   │       └── demo    │   │└── App.java    │   └── resources    │       └── log4j.properties    └── test        └── java └── org     └── demo         └── AppTest.java

构建运行如下:

$ ant Buildfile: /home/mark/Files/Dev/ivy/demo/build.xmlresolve:[ivy:resolve] :: Apache Ivy 2.3.0 - 20130110142753 :: http://ant.apache.org/ivy/ ::[ivy:resolve] :: loading settings :: url = jar:file:/home/mark/.ant/lib/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml[ivy:resolve] :: resolving dependencies :: com.myspotontheweb#demo;working@mark-Lemur-Ultra[ivy:resolve]   confs: [compile, runtime, test][ivy:resolve]   found org.slf4j#slf4j-api;1.7.5 in public[ivy:resolve]   found org.slf4j#slf4j-log4j12;1.7.5 in public[ivy:resolve]   found log4j#log4j;1.2.17 in public[ivy:resolve]   found junit#junit;4.11 in public[ivy:resolve]   found org.hamcrest#hamcrest-core;1.3 in public[ivy:resolve] :: resolution report :: resolve 347ms :: artifacts dl 14ms    ---------------------------------------------------------------------    |       | modules ||   artifacts   |    |       conf       | number| search|dwnlded|evicted|| number|dwnlded|    ---------------------------------------------------------------------    |      compile     |   1   |   0   |   0   |   0   ||   1   |   0   |    |      runtime     |   3   |   0   |   0   |   0   ||   3   |   0   |    |       test       |   5   |   0   |   0   |   0   ||   5   |   0   |    ---------------------------------------------------------------------[ivy:report] Processing /home/mark/.ivy2/cache/com.myspotontheweb-demo-compile.xml to /home/mark/Files/Dev/ivy/demo/build/ivy-reports/com.myspotontheweb-demo-compile.html[ivy:report] Processing /home/mark/.ivy2/cache/com.myspotontheweb-demo-runtime.xml to /home/mark/Files/Dev/ivy/demo/build/ivy-reports/com.myspotontheweb-demo-runtime.html[ivy:report] Processing /home/mark/.ivy2/cache/com.myspotontheweb-demo-test.xml to /home/mark/Files/Dev/ivy/demo/build/ivy-reports/com.myspotontheweb-demo-test.htmlresources:     [copy] Copying 1 file to /home/mark/Files/Dev/ivy/demo/build/classescompile:    [javac] Compiling 1 source file to /home/mark/Files/Dev/ivy/demo/build/classescompile-tests:    [mkdir] Created dir: /home/mark/Files/Dev/ivy/demo/build/test-classes    [javac] Compiling 1 source file to /home/mark/Files/Dev/ivy/demo/build/test-classestest:    [mkdir] Created dir: /home/mark/Files/Dev/ivy/demo/build/test-reports    [junit] Running org.demo.AppTest    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.085 secbuild:[ivy:retrieve] :: retrieving :: com.myspotontheweb#demo[ivy:retrieve]  confs: [runtime][ivy:retrieve]  3 artifacts copied, 0 already retrieved (512kB/16ms)      [jar] Building jar: /home/mark/Files/Dev/ivy/demo/build/dist/demo.jarBUILD SUCCESSFULTotal time: 4 seconds

常春藤
常春藤的一个非常强大的功能是配置。这些使您可以将依赖项分组在一起。

<ivy-module version="2.0">    <info organisation="com.myspotontheweb" module="demo"/>    <configurations>        <conf name="compile" description="Required to compile application"/>        <conf name="runtime" description="Additional run-time dependencies" extends="compile"/>        <conf name="test"    description="Required for test only" extends="runtime"/>    </configurations>    <dependencies>        <!-- compile dependencies -->        <dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" conf="compile->default"/>        <!-- runtime dependencies -->        <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.7.5" conf="runtime->default"/>        <!-- test dependencies -->        <dependency org="junit" name="junit" rev="4.11" conf="test->default"/>    </dependencies></ivy-module>

笔记:

配置使用“扩展”功能来模拟Maven“编译”,“运行时”和“测试” Maven范围。
注意每个依赖项上的特殊“ conf”属性。这是从本地到远程的映射。有关ivy如何管理远程Maven模块的更多详细信息,请参见:ivy如何将maven范围映射到ivy配置
build.xml
常春藤配置可以被诸如cachepath(创建ANT路径)和检索(将文件复制到构建中)之类的任务所利用。我还建议使用报告目标,以便您可以查看每种配置中出现了哪些jar(用于管理传递依赖项)

<project name="demo" default="build" xmlns:ivy="antlib:org.apache.ivy.ant">    <!--    ================    Build properties    ================    -->    <property name="src.dir"          location="src/main/java"/>    <property name="resources.dir"    location="src/main/resources"/>    <property name="test.src.dir"     location="src/test/java"/>    <property name="build.dir"        location="build"/>    <property name="classes.dir"      location="${build.dir}/classes"/>    <property name="test.classes.dir" location="${build.dir}/test-classes"/>    <property name="ivy.reports.dir"  location="${build.dir}/ivy-reports"/>    <property name="test.reports.dir" location="${build.dir}/test-reports"/>    <property name="dist.dir"         location="${build.dir}/dist"/>    <property name="jar.main.class" value="org.demo.App"/>    <property name="jar.file"       value="${dist.dir}/${ant.project.name}.jar"/>    <available classname="org.apache.ivy.Main" property="ivy.installed"/>    <!--    ===========    Build setup    ===========    -->    <target name="install-ivy" description="Install ivy" unless="ivy.installed">        <mkdir dir="${user.home}/.ant/lib"/>        <get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar"/>        <fail message="Ivy has been installed. Run the build again"/>    </target>    <target name="resolve" depends="install-ivy" description="Use ivy to resolve classpaths">        <ivy:resolve/>        <ivy:report todir='${ivy.reports.dir}' graph='false' xml='false'/>        <ivy:cachepath pathid="compile.path" conf="compile"/>        <ivy:cachepath pathid="test.path"    conf="test"/>    </target>    <!--    ===============    Compile targets    ===============    -->    <target name="resources" description="Copy resources into classpath">        <copy todir="${classes.dir}"> <fileset dir="${resources.dir}"/>        </copy>    </target>    <target name="compile" depends="resolve,resources" description="Compile pre">        <mkdir dir="${classes.dir}"/>        <javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false" debug="true" classpathref="compile.path"/>    </target>    <target name="compile-tests" depends="compile" description="Compile tests">        <mkdir dir="${test.classes.dir}"/>        <javac srcdir="${test.src.dir}" destdir="${test.classes.dir}" includeantruntime="false" debug="true"> <classpath>     <path refid="test.path"/>     <pathelement path="${classes.dir}"/> </classpath>        </javac>    </target>    <!--    ============    Test targets    ============    -->    <target name="test" depends="compile-tests" description="Run unit tests">        <mkdir dir="${test.reports.dir}"/>        <junit printsummary="yes" haltonfailure="yes"> <classpath>     <path refid="test.path"/>     <pathelement path="${classes.dir}"/>     <pathelement path="${test.classes.dir}"/> </classpath> <formatter type="xml"/> <batchtest fork="yes" todir="${test.reports.dir}">     <fileset dir="${test.src.dir}">         <include name="**AllTests.java"/>     </fileset> </batchtest>        </junit>    </target>    <!--    =====================    Build and run targets    =====================    -->    <target name="build" depends="test" description="Create executable jar archive">        <ivy:retrieve pattern="${dist.dir}/lib/[artifact]-[revision](-[classifier]).[ext]" conf="runtime"/>        <manifestclasspath property="jar.classpath" jarfile="${jar.file}"> <classpath>     <fileset dir="${dist.dir}/lib" includes="*.jar"/> </classpath>        </manifestclasspath>        <jar destfile="${jar.file}" basedir="${classes.dir}"> <manifest>     <attribute name="Main-Class" value="${jar.main.class}" />     <attribute name="Class-Path" value="${jar.classpath}" /> </manifest>        </jar>    </target>    <target name="run" depends="build" description="Run pre">        <java jar="${jar.file}" fork="true"/>    </target>    <!--    =============    Clean targets    =============    -->    <target name="clean" description="Cleanup build files">        <delete dir="${build.dir}"/>    </target>    <target name="clean-all" depends="clean" description="Additionally purge ivy cache">        <ivy:cleancache/>    </target></project>

注意:

有条件的“ install-ivy”目标将自动安装ivy。只需重新运行构建,只需完成一次。

App.java

你好世界记录示例。

package org.demo;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class App {    static final Logger log = LoggerFactory.getLogger(App.class);    public static void main( String[] args ) {        App a = new App();        a.speak("hello world");    }    public void speak(String message) {        log.info(message);    }}

AppTest.java

这是我档案中的一个旧示例。不使用Junit断言。

ackage org.demo;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;public class AppTest     extends TestCase{        public AppTest( String testName )    {        super( testName );    }        public static Test suite()    {        return new TestSuite( AppTest.class );    }        public void testApp()    {        assertTrue( true );    }}log4j.properties# Set root logger level to DEBUG and its only appender to A1.log4j.rootLogger=DEBUG, A1# A1 is set to be a ConsoleAppender.log4j.appender.A1=org.apache.log4j.ConsoleAppender# A1 uses PatternLayout.log4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469927.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号