jjzjj

java - Java 构建工具如何停止重建所有内容?

tl;dr版本:有没有一种方法可以告诉ant/maven/gradle跟踪文件依赖关系并且只重建过时的文件,即比它们的依赖关系更旧的文件?长版如下:我是如何用C/C++实现的我为C/C++使用了很多年make。虽然有时它可能很麻烦,但它至少做了对我来说最重要的事情之一:它跟踪文件依赖关系,并且仅在其任何依赖关系比文件本身更新时才重建文件。这很棒,它大大减少了构建时间,尤其是在执行大量代码生成工具时。我在我的项目中使用了很多代码生成。然而,代码生成需要一些时间,生成的代码还要在之后进行编译,这样就浪费了更多的时间。大多数生成的代码仅依赖于少量文件,例如,生成解析器时的语法规范。使用mak

java - 为什么在 netbeans 项目中从 ant 命令行运行 test-with-groovy 不能运行测试?

我有一个netbeans项目,我在其中也有groovy用于spock测试。当我右键单击该项目并说测试时,它会运行一个名为的任务test-with-groovy但是当我运行anttest-with-groovy时,测试被编译但没有运行。我觉得netbeans端必须添加一些东西,但我不知道是什么,搜索了半天也没有结果。谁能帮帮我?这里是你如何得到我得到的结果:我在netbeans8.0.2中用一个简单的main创建了一个简单的java项目packagesimpleantjava;publicclassSimpleAntJava{publicstaticvoidmain(String[]ar

java - 在 C/Java 项目中,管理构建的合适方法是什么?

在C/Java项目中,管理构建的合适方法是什么?我最初想用Autotools构建所有C语言,用ApacheAnt构建所有Java语言,然后让每个构建器“执行”另一个构建器。另一种方法是在Autotools中完成所有操作。我更喜欢autotools而不是ant,因为我不知道有任何类似Autoconf的Ant应用程序。该项目是一个JNI项目,在语言之间具有同等/对称的责任,换句话说,它应该可供仅使用Java的开发人员和仅使用C的开发人员以及使用Java和C的开发人员使用。谢谢,陈子 最佳答案 我会推荐CMake这是多平台和多语言的。您可

java - 如何加快 jar signer 的速度?

我使用ant为web-start部署签署我的jars。Ant.signjar在web-start签名时非常慢。如何加快签名过程? 最佳答案 我找到了一种可能的解决方案。在构建脚本的早期,ant.signjar会依次调用所有jar(我们使用gradle进行构建,依赖项超过20MB)。现在我使用groovy库GPars方法:withPool(4)和eachParallel{ant.signjar}。我的电脑有2个内核,构建服务器有4个内核,这很酷。(快3倍)第二个技巧是缓存:我们对所有RELEASE/NON-SNAPSHOT依赖项使用缓

java - 由于依赖项无效,无法加载类 org.eclipse.jdt.core.JDTCompilerAdapter

我正在创建一个java代理,用于对某些类进行一些字节码修改org.eclipse.jdt.core.JDTCompilerAdapter是其中之一。我正在使用javassit修改一些execute()org.eclipse.jdt.core.JDTCompilerAdapter的方法|.所以我在我的代理项目中包含了ecj(使用gradle)compilegroup:'org.eclipse.jdt.core.compiler',name:'ecj',version:'4.3.1'因为我需要使用ecj的一些类。代理的目标是拦截对execute方法的调用,修改execute方法以添加对我的

java - 如何让 ant 不打印 BuildException/ExitStatusException 堆栈跟踪

我写了一个ant任务(bnd),需要提示失败。我发现指示失败的唯一方法是抛出BuildException/ExitStatusException。但是,我不想要堆栈跟踪,因为它只会占用不必要的屏幕空间。知道如何实现这一点吗? 最佳答案 查看教程http://ant.apache.org/manual/tutorial-writing-tasks.html#complex他们展示了一个正常失败的示例,在自定义任务中抛出BuildException,但不在控制台窗口中显示堆栈跟踪。要注意的代码在'HelloWorld'类的execute

java - 继承javadoc,不为继承源生成文档

我希望classB从它实现的接口(interface)interfaceA继承Javadoc。我在我的Javadoc命令中包含了interfaceA的源代码,并且classB正确地继承了文档。现在我想知道我是否可以使它生成的链接指向interfaceA在网络上的文档,而不是在我的站点上复制它,即“指定者:”链接将链接到外部页面。这可能吗? 最佳答案 有可能,是的。为了能够包含继承的文档,接口(interface)A的源必须可以在javadoc的源路径中找到,但不应在传递给javadoc以创建文档的包列表中。对于链接,请使用-link

ant - 我可以在 Ant build.xml 中指定要编译的 JDK 路径吗?

我想在项目的一个分支中使用JDK1.6,而其他人继续使用JDK1.5。开发人员希望偶尔在它们之间切换。那么告诉Ant'sjavac的最佳方式是什么?使用哪个JDK?最好的意思是,我的意思是健壮、透明、低维护,与源代码一起进行版本控制(Ant本身和JDK当然不是,但它们位于标准位置)。我猜想在Ant之外是显而易见的(而不是最好的)方法:不断更改JAVA_HOMEenv变量。然而,这将需要开发人员手动切换(另一件事要记住:容易出错),更改所有-many-build服务器(现在对我来说更多的工作)。寻找一些简单的javac属性,例如jdk-path,我注意到了几个(感谢在网上和SO中阅读):

java - 调用包含 hbm2ddl 任务的 ant 脚本时,Runtime.exec 会卡住吗?

为了启动一个ant脚本,我使用java.lang.Runtime类的exec方法,如下所示:Processprocess=Runtime.getRuntime().Exec(JAVA_HOMEANT_HOME-jar/lib/ant-launcher.jar-BuildFilefile.xml);这个方法,尽管看起来很简单,但是它带来了几个问题,在javadoc中描述如下:BecauseSomenativeplatformsProvideonlylimitedbuffersizeforstandardinputandoutputstreams,failuretopromptlywrit

java - SSL异常 : SSL peer shut down incorrectly

在我的客户端Ant任务中从Jetty服务器下载文件,我偶尔会得到一个javax.net.ssl.SSLException:SSLpeershutdownincorrectlyatcom.sun.net.ssl.internal.ssl.InputRecord.readV3Record(InputRecord.java:408)atcom.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:360)atcom.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSock