Tag: ant

如何在生产中测试和运行jar时创建一个可用的MANIFEST.MF?

我花了太多时间试图解决这个问题。 这应该是最简单的事情,每个在Java中分发Java应用程序的人都必须处理它。 我只是想知道向我的Java应用程序添加版本控制的正确方法,以便我可以在测试时访问版本信息,例如在Eclipse中调试并从jar运行。 这是我在build.xml中的内容: 这创建了/META-INF/MANIFEST.MF,我可以在Eclipse中调试时读取值: public MyClass() { try { InputStream stream = getClass().getResourceAsStream(“/META-INF/MANIFEST.MF”); Manifest manifest = new Manifest(stream); Attributes attributes = manifest.getMainAttributes(); String implementationTitle = attributes.getValue(“Implementation-Title”); String implementationVersion = attributes.getValue(“Implementation-Version”); String builtDate = attributes.getValue(“Built-Date”); String builtBy = attributes.getValue(“Built-By”); } catch (IOException e) { logger.error(“Couldn’t read manifest.”); } } 但是,当我创建jar文件时,它会加载另一个jar的清单(可能是应用程序加载的第一个jar – 在我的例子中,是activation.jar)。 此外,尽管所有正确的值都在清单文件中,但以下代码不起作用。 Package thisPackage […]

如何升级内置于eclipse中的ant?

我在我的所有构建中都使用ANT,并且我也使用eclipse作为我的IDE,我希望能够在我的日食中使用最新版本的ANT,通常随eclipse附带的ANT是一个落后点。 所以我的问题是。 是否有一种简单的方法可以让eclipse ant插件使用最新版本的ANT? 是否有任何简单的方法可以在内置的eclipse ANT插件中添加额外的自定义ant库,因为我希望能够将诸如subversion任务之类的内容添加到我的ant构建中并让它可以在eclipse中访问。

有没有办法在build.xml中设置ant -verbose?

我想从eclipse和hudson构建时获得详细的控制台输出。 似乎没有和详细属性,从脚本内部调用ant上的只是为了传递详细的prop。 有没有更好的办法?

学习Ant的最佳资源是什么?

我想学习Ant。 谁能推荐一些关于这个主题的好学习资源? 任何资源都值得赞赏,从在线入门教程到深入的书籍。 谢谢你的帮助!

Java Manifest文件的类路径以及它如何确定相对dirs

MANIFEST.MF文件中的类路径如何确定相对位置? 1)假设我在lib/somejar.jar有一个带有jar的JAR,而且清单文件位于META-INF/MANIFEST.MF 。 我如何设置类路径….? 它是Class-path: lib/somejar.jar还是../lib/somejar.jar ? 2)让我们说somejar.jar里面还有其他主jar依赖的jar子。 当然somejar.jar也有自己的MANIFEST.MF文件,其中包含正确设置的类路径字段。 现在让我们说原始主jar文件在运行时需要访问其中一个JAR文件,只要somejar.jar在main.jar的类路径上,它能够这样做吗? 或者相关目录搞砸了,因为主jar运行’somejar.jar’不再是root了吗? 次要更新:这将全部在应用程序服务器上的Web环境中运行。

后续第2部分 – 使用Maven仅签名和部署jar到Maven Central。 构建和编译完全由Ant完成

这是一个跟进: 后续问题:使用Maven仅签名和部署jar到Maven Central。 构建和编译完全由Ant完成 感谢前面问题的答案,以及来自sonatype支持人员的一些建议,我刚刚第一次“非失败”。 这是mvn deploy的当前输出: [INFO] Scanning for projects… [INFO] [INFO] ———————————————————————— [INFO] Building XBN-Java 0.1.2-SNAPSHOT [INFO] ———————————————————————— [INFO] [INFO] — maven-enforcer-plugin:1.0:enforce (enforce-maven) @ xbnjava — [INFO] [INFO] — maven-install-plugin:2.4:install (default-install) @ xbnjava — [INFO] Installing R:\jeffy\programming\sandbox\xbnjava\pom.xml to C:\Users\jeffy\.m2\repository\com\github\aliteralmind\xbnjava\0.1.2-SNAPSHOT\xbnjava-0.1.2-SNAPSHOT.pom [INFO] [INFO] — maven-deploy-plugin:2.7:deploy (default-deploy) @ xbnjava — Downloading: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/0.1.2-SNAPSHOT/maven-metadata.xml 607/607 B Downloaded: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/0.1.2-SNAPSHOT/maven-metadata.xml […]

如何在我的Ant构建脚本中运行JUnit测试,同时从生成的jar中省略测试类?

我正在使用Ant手册中的Hello World with Ant教程来了解Ant。 本教程的最后一部分涉及将JUnit测试添加到项目中。 我已按照教程中的描述完成所有工作,现在我正在进行一些小的更改。 我想做的一个改变是在典型的构建期间运行测试,但没有* Test.class文件最终在应用程序的最终.jar文件中。 这是因为我将要开发的最终项目将用于硬盘空间有限的设备,并且仅支持Java SDK的一个子集,因此我更愿意完全从jar中省略这些测试文件。 我该怎么做呢? 创建两个独立的jar子很容易,一个用于测试,一个用于部署,但这似乎不太理想。 我当前的build.xml文件如下。 我尝试过的一件事是修改jar命令以排除* Test.class文件 … … 哪个成功排除了测试类,但是当测试通过junit目标运行时,当使用-v运行时,它会失败并显示以下堆栈跟踪: [LocalPath]\build.xml:44: Test HelloWorldTest failed at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.actOnTestResult(JUnitTask.java:1863) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:814) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:1808) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:760) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:390) at org.apache.tools.ant.Target.performTasks(Target.java:411) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1397) at org.apache.tools.ant.Project.executeTarget(Project.java:1366) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1249) […]

如何在NetBeans中设置系统属性值?

我在这里关注JAAS身份validation的教程,当它显示如何运行示例代码时,说编译的类应该使用Java启动程序的标准选项启动,即-Djava.security.auth.login.config == sample_jaas.config。 这样就可以设置系统属性: java -Djava.security.auth.login.config==sample_jaas.config sample.SampleAcn 我这样做了,但现在我想在NetBeans中运行代码。 由于NetBeans使用Ant,我认为指定这些选项可能会有所不同。 我查看了NetBeans中的选项菜单,但没有找到任何内容。 在使用NetBeans运行时如何设置此属性?

EAR文件和“WebSphere Enhanced EAR”之间有什么区别?

假设我有一个标准的EAR文件(以及用于生成它的源文件),需要进行哪些额外的处理才能将其转换为IBM WebSphere“Enhanced EAR”? 提出这个问题的另一种方法是问:“增强型EAR和标准EAR之间有什么区别?” 我非常清楚Rational开发工具(RAD和RSA)中有工具。但是,出于这个问题的目的,我需要在自动构建中完成相同的任务(通过Ant或Maven)。

在JUnit @BeforeClass中加载属性文件

我正在尝试在我的JUnit测试执行期间从我的类路径加载sample.properties,它无法在类路径中找到该文件。 如果我编写Java Main类,我可以正常加载文件。 我正在使用下面的ant任务来执行我的JUnit。 public class Testing { @BeforeClass public static void setUpBeforeClass() throws Exception { Properties props = new Properties(); InputStream fileIn = props_.getClass().getResourceAsStream(“/sample.properties”); **props.load(fileIn);** } } JUnit的: 输出: [junit] Tests run: 0, Failures: 0, Errors: 1, Time elapsed: 0.104 sec [junit] [junit] Testcase: com.example.tests.Testing took 0 sec [junit] Caused an ERROR [junit] null […]