Tag: ant

如何为Android库项目指定多个源目录

我使用ant工具构建android库项目,我需要指定多个源目录。 我试图通过在ant.properties文件中添加这些行来指定多个源目录 source.dir=src:src2 source.dir=src;src2 但无法在两种情况下构建,在这两种情况下都会生成.class ,但是在创建jar文件时我遇到了这个错误 BUILD FAILED C:\Program Files\Android\android-sdk\tools\ant\build.xml:681: The following error occurred while executing this line: C:\Program Files\Android\android-sdk\tools\ant\build.xml:749: C:\workarea\Android\Packages\test\src;src2 does not exist. 任何人都可以告诉我如何在ant.properties中指定多个源目录来构建Android库项目 ?

junit:forkMode =“once”对测试正确性的影响

我想减少构建(使用ant)运行测试所需的时间。 目前我正在使用默认的forkMode ,它在每个测试类 ( perTest ) 上分配一个新的vm 。 我正在考虑切换到forkMode=”once”但我不确定这是否会以某种方式结合测试,并且可能在运行我的测试后给出假阳性和/或假阴性结果。 问题: 每个测试用例是否会获得一个新的ClassLoader,以便以前运行的所有静态引用都不再可访问/可见? 还有其他导致测试依赖/耦合的测试方法可能会改变行为(除了我没有使用的本机库加载) 垃圾收集/定型怎么样,它们是在每次测试后运行的吗? (我不依赖它们,但我只想得到完整的图片) UPDATE 根据当前的答案,当使用forkMode时,似乎junit总是在每个vm / fork的所有测试用例之间共享一个类加载器。 (所以forkMode =“once”确实意味着所有测试都有一个类加载器) 这有许多优点(测试速度更快,并且可能导致测试因静态耦合而失败)但也存在一些缺点(静态耦合只有在使用共享类加载器时才会起作用 – >误报)

Ant + JUnit:NoClassDefFoundError

好的,我很沮丧! 我已经狩猎了好几个小时,我仍然难过。 环境:WinXP,Eclipse Galileo 3.5(直接安装 – 无需额外插件)。 所以,我有一个简单的JUnit测试。 它从内部Eclipse JUnit运行配置运行良好。 这个类没有依赖任何东西。 要尽可能缩小此问题,它只包含: @Test public void testX() { assertEquals(“1”, new Integer(1).toString()); } 到目前为止没有汗水。 现在我想采取从Ant内部运行此测试用例的超级高级步骤(最终目标是与Hudson集成)。 所以,我创建了一个build.xml: $ {basedir}是工作空间中包含源,类和构建文件的Java项目名称。 所有.java和build.xml都在$ {basedir} / src中。 .class文件位于$ {basedir} / bin中。 我已经通过Windows / Preferences / Ant / Runtime / Contributed Entries将eclipse-install-dir / plugins / org.junit4_4.5.0.v20090423 / junit.jar添加到Ant运行时类路径中。 ant-junit.jar在Ant Home Entries中。 那么,当我运行这个疯狂复杂的目标时会发生什么? 我的报告文件包含: […]

Ant无法找到外部定义的taskdef所需的类

我正在尝试使用axis-java2wsdl ant任务从我的一个java类创建一个wsdl,但我无法使类路径正确。 我正在使用Ubuntu的libaxis-java软件包,它在$ ANT_HOME / lib中安装axis-ant.jar,在/ usr / share / java中安装axis.jar。 我的build.xml的有趣部分如下所示: details omitted 运行ant genwsdl导致: /build.xml:50: taskdef A class needed by class org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask cannot be found: org/apache/axis/utils/DefaultAuthenticator Ant能够找到axis-java2wsdl任务的定义,因为axis-ant.jar位于$ ANT_HOME / lib中,但它无法在axis.jar中找到类,即使该jar位于“libraries”定义的路径上 我知道这是一个类路径问题,因为我能够通过符号链接axis.jar到$ ANT_HOME / lib中找不到其他类的DefaultAuthenticator。 如何让taskdef识别/ usr / share / lib或我项目的本地lib目录中的jar文件,而无需将所有内容符号链接到$ ANT_HOME / lib中? 编辑: 我终于能够用这一行成功生成wsdl: ant -lib /usr/share/java/axis.jar -lib /usr/share/java/jaxrpc.jar -lib /usr/share/java/wsdl4j.jar -lib […]

使用Ant时java.security.AccessControlException,但从控制台调用java时运行正常

我有以下Ant 任务: 当我运行Ant时执行 任务失败(见下面的跟踪)。 当我复制粘贴回显的类路径并使用java -classpath从命令行运行我的代码时,执行成功! 在这两种情况下都使用相同版本的java 。 我怎么可能观察到不同的行为? java.security.AccessControlException位于stacktrace的根目录下,但我已经授予我的Ant java任务所有安全权限,包括显式的动作寄存器的MBeanTrustPermission ,它也出现在堆栈跟踪中。 跟踪(在Ant下运行时)如下: [java] java.lang.ExceptionInInitializerError [java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:194) [java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:771) [java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:221) [java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:135) [java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108) [java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) [java] at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [java] at java.lang.reflect.Method.invoke(Method.java:601) [java] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) [java] at org.apache.tools.ant.Task.perform(Task.java:348) [java] at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) [java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) […]

离线/断开连接时解决Apache Ivy依赖关系?

当脱机/断开连接时,如何让Ivy从本地缓存中解析依赖关系(包括使用changing=”true”依赖关系)? 我正在开发一个基于Java的开源项目,该项目使用Apache Ivy来解析和下载第三方依赖项。 项目的build.xml有一个名为resolve的ant目标,可以下载Ivy(如果需要),然后使用Ivy来检索所需的jar。 在线时一切都很棒。 但是,如果没有Internet访问,即使所需的jar文件位于本地Ivy缓存( ~/.ivy2/cache )中, ant resolve也会失败。 似乎Ivy正在尝试连接到Maven存储库以刷新changing=”true”依赖项。 我得到的错误类似于以下内容: [ivy:retrieve] You probably access the destination server through a proxy server that is not well configured. [ivy:retrieve] You probably access the destination server through a proxy server that is not well configured. [ivy:retrieve] [ivy:retrieve] :: problems summary :: [ivy:retrieve] :::: WARNINGS [ivy:retrieve] Host […]

Ant scp任务无法正常工作,即使在ant / lib上使用jsch也是如此

我需要通过scp复制war文件。 我已将jsch-0.1.42.jar添加到$ANT_HOME/lib但我仍然收到此错误: 原因:找不到类org.apache.tools.ant.taskdefs.optional.ssh.Scp。 这看起来像Ant的可选组件之一。 这是运行ant -diagnostics的结果,以防万一: http://gist.github.com/320859

从Windows下的ANT脚本创建RPM包

我需要从在Windows计算机上运行的ANT脚本创建RPM包。 此包必须包含构建中的结果类以及其他一些其他资源。 我想应该有一些程序可以从命令行调用来创建这个包。 我想在Windows下执行此操作的原因是我们有一个脚本可以为几个不同的平台构建安装程序,并且已经为windows配置了所有内容,所以我想避免将所有内容迁移到Linux的痛苦。 你知道怎么能实现这个目标吗? 编辑:我使用单独的Linux机器来做到这一点。 我使用scp任务复制所有文件,然后使用ssh任务远程执行rpm命令。 如果此任务返回成功代码,则使用scp将结果rpm复制回来。

使用Java 1.6在Eclipse Mars上运行Ant

我下载了最新版本的Eclipse(Mars),并在eclipse.ini文件中将所需的Java版本更改为1.6,因为我的项目使用的是Java 1.6。 我在Eclipse中配置了已安装的JRE以使用Java 1.6。 但是当我尝试执行我的ant目标时,它会产生一个错误: 不支持小于1.7的JRE版本。 有没有在Mars版本中使用Java 1.6的解决方法,因为我目前无法升级到Java 1.7?

java堆栈跟踪中的“未知源”,但行号在类文件中

我编写了一个超级简单的java类,它应该抛出exception。 但是我得到的堆栈跟踪看起来像这样: java.lang.RuntimeException: hello at Main.go(Unknown Source) at Main.main(Unknown Source) 注意:堆栈跟踪中没有行号,我希望有。 在搜索此问题时您找到的答案都是在编译时添加正确的参数,以确保行号实际上进入类文件。 但是,我不相信这是我的问题,因为我在我的ant build.xml中有这个问题 此外,根据javap,它看起来像行号确实成功: $ javap -l ./build/classes/Main | head -n 9 public class Main extends java.lang.Object{ public Main(); LineNumberTable: line 14: 0 line 22: 4 line 23: 15 line 24: 26 什么赋予了什么? 当我运行代码时,是否需要在jvm中设置一个参数? 谢谢!