Apache Ant(以前称为Jakarta Ant)是一个基于XML的声明式构建工具,最初是为Java项目创建的。它提供了一组丰富的标准任务,用于执行大多数常见的构建操作,例如编译Java源代码,构建存档和运行测试。 Ant的功能可以通过自定义任务和宏进行扩展。
Ant Javac 和 Commandline Javac 给出不同的结果
我有一个导入一些 servlet 库的类。当我从命令行编译它时,一切都很好。 当我使用ant编译任务来编译它时,它给出了找不到servlet的错误
我只是想从 Windows 终端运行 ant。我将 /bin 目录放在 C:\Program Files pache-ant pache-ant-1.10.14 下。我将其添加为 ANT_HOME 系统变量,并添加了 %ANT_HOME% i...
我们目前正在使用 Ant 和 Ivy 进行构建和依赖管理,但有兴趣提供模板启动项目,例如 Maven 使用原型提供的项目。 http://maven.apache.org/
将AspectJ 1.8.1升级到1.9.8并与Gradle 7 + Java 11集成无法找到Aspectjrt.jar
我正在将基于 Java 8 的 spring 代码库(gradle 项目)升级到 Java 11。 该项目确实包含 AOP 代码(https://en.wikipedia.org/wiki/Aspect-oriented_programming)并且它依赖于
错误:无法找到或加载主类 org.apache.tools.ant.launch.Launcher osx jenkins 从属
我尝试在 Jenkins 从机上构建 osx 并收到此错误。当我登录机器时,我可以运行 ant -version 并且它可以工作。仅当我尝试从 Jenkins 构建时,才会出现此错误: 错误:
今天早上我正在查看 Ant build.xml 文件,并注意到根 元素中有一个 XML 命名空间声明: 今天早上我正在查看 Ant build.xml 文件,并注意到根 <project> 元素中有一个 XML 命名空间声明: <project name="${project.name}" xmlns:ivy="antlib:org.apache.ivy.ant"> 我认为这个 XML 命名空间是为了让散布在构建脚本中的所有 Ivy 任务都知道要在哪个资源中查找任务定义(<ivy:configure>、<ivy:resolve>等),但希望对该语句的语法。 蚂蚁世界中“命名空间”的概念是什么?这个 xmlns:ivy= 属性是否指向 JAR? 这个 org.apache.ivy.ant JAR/资源/其他东西会在哪里? 什么是antlib以及它在哪里定义? 另外,这里只是一个短暂的想法,Ivy 文件(ivy.xml)是否能够导入属性文件并使用其属性值?我查看了 Ivy 文档,但找不到任何导入类型语句的引用。 提前致谢! 就 XML 而言,命名空间与任何其他命名空间一样。但是,Ant 使用 antlib: 作为 URL 方案来知道它应该在类路径中查找 org/apache.ivy/antlib.xml 文件。请参阅 Ant 手册中的 antlib 类型。 由于它正在寻找类路径,因此 antlib.xml 可以位于类加载器可以找到它的任何位置。默认设置是将必要的 jar 文件放在 <ant install>/lib 目录中。您还可以使用 -lib 启动 ant 来指定不同的目录或仅设置 CLASSPATH(不推荐)。 是的,您可以导入属性文件。请参阅有关多项目的 Ivy 手册信息。 Ivy 支持 ${property} 语法,您可以使用 Ant 的 <property> 任务来加载 Ivy 可以使用的文件。如果您想为 Ivy 定义“全局”值,您还可以在 ivysettings.xml 中使用 <property> 元素。 我只给你部分答案,希望有人能验证一下: 命名空间:我不确定。我认为它只是一个 XML 命名空间。 资源:在后端,Ant 运行一个 Java 程序。 Ant“可执行文件”(实际上只是 *NIX 上的 .sh 脚本和 Win 上的 .bat 文件)在运行时构建它。 antlib:是$ANT_HOME/lib 的路径。它是在运行时构建的,就像类路径一样。 ivy 属性文件:是的,您可以使用属性文件(至少使用 Eclipse 的 IvyDE 插件)。我只知道这一点,因为我们有它们在工作,我不完全理解它们的工作机制。 对我来说,修复 build.xml 中 <ivy:resolve>、<ivy:retrieve> 等的语法错误的方法是删除 URL 并将其替换为 xmlns:m="antlib:org.apache.ivy.ant"。 build.xml <project name="proj" default="dist" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant"> <taskdef uri="antlib:org.apache.ivy.ant" resource="org/apache/ivy/ant/antlib.xml"> <!-- ... --> </taskdef> <!-- ... --> </project> ivy.xml <ivy-module version="2.0" xmlns:m="antlib:org.apache.ivy.ant"> <info organisation="org" module="proj"/> <dependencies> <!-- ... --> </dependencies> </ivy-module>
我有一个 SOAP UI 中的 API 测试测试套件。 我想要一份测试用例结果的 HTML 报告。我正在使用基本的 SOAP UI 版本。给我一个除了 SOAP UI Pro 之外的解决方案。
我正在尝试制作一个带有进入和退出动画以及无限滚动的通知列表。 我正在使用自定义交叉点观察者钩子来触发无限滚动和 rc-queue-anim
使用 Path 而不是 FileSet 的 Ant Copy 任务
我正在使用Ant 1.7,想要从不同路径复制文件(它们没有关系,所以我无法使用包含选择器将它们从根目录中过滤出来)。我尝试使用
在 Maven Ant 任务期间“无法登录到 FTP 服务器” – 但可以使用相同的凭据登录 GUI FTP 客户端
我有一个 Maven 构建,一旦打包完成,我尝试使用特定配置文件将一些文件从打包发送到 FTP 服务器。问题是,我一直遇到 Maven 失败
CreateProcess error=2,无法在 Ant 上运行程序“python”
我有一个 C:\Users\Sony\Desktop\Project\Workspace estpython erify_fam_extended.xml:52: 执行失败: java.io.IOException: 无法运行程序“python”(在目录“C:\Users\Sony”中) \桌面\项目\
将 JaCoCo 与 SONAR 集成以实现单元和集成测试覆盖率
有没有人尝试过配置 JaCoCo 将单元测试和集成测试的覆盖范围转储到 2 个不同的文件中,以便 SONAR 使用 ANT 构建来使用它们?
我正在尝试在 Azure Devops 中运行管道,但构建总是失败,并出现以下错误 Property salesforce.password was Circlely Defined。 这是我拥有的管道
我想删除一个文件夹,如果它是空的,并且如果它不空,也不应该删除该文件夹及其子文件夹和里面的文件
我有这个目录:D:\Rahul\DIspatcher\Logs 因此,如果日志为空,则应删除日志文件夹 预期结果:D:\Rahul\DISpatcher 如果我有这个目录:D:\Rahul\DIspatcher\Logs\log1....
我有一个必须包含长字符串列表的属性,为了提高可读性,我想在单独的行中定义每个值(相当长),例如: 我有一个必须包含长字符串列表的属性,为了提高可读性,我想在单独的行中定义每个值(相当长),例如: <property name="items" separator=","> <item>A</item> <item>B</item> </property> 相当于 <property name="items" value="A,B" /> 或者类似于 <path> + <pathconvert> 但不扩展路径的东西。 可以吗? 原来有字符串资源和通用资源容器: <resources id="items"> <string>A</string> <string>B</string> </resources> <pathconvert property="items" refid="items" pathsep="," /> 标准 ANT 不支持。 有一个流行的 ant-contrib 插件,它有一个“foreach”任务,作用于逗号分隔的属性,但我更喜欢嵌入适当的编程语言。 groovy 因其出色的 Java 和 ANT 集成而脱颖而出。 列表处理示例: 更改 ANT 中列表的值 如何通过逗号分隔在一个 Ant 目标中传递两个变量 另一种方法是使用: <property file='lists.properties'/> 然后创建一个单独的文件名lists.properties: #sample properties, you can use \ for line continuation example=A,\ B,\ C 然后回到 build.xml 中,您可以使用“example”属性: ${example} 谢谢,
Ant 任务检查 Windows 上安装的 compositant 版本
我是ant的新手,我想编写一个任务来检查更新之前安装在服务器上的postgresql、java、Mysql、apache、php ....等组件的版本。 我...
我有一个要求,需要将源组织上安装的托管包部署到目标组织。我相信一定有一种方法可以像我们为所有其他销售所做的那样使用 ANT 进行部署...
warning.js:19 警告:[antd: Menu] `children` 已弃用。请使用“items”代替
有一个项目,包含多个界面,而这些界面中有一个包含侧边栏的界面,我的侧边栏使用了“菜单”。 但我遇到了这个问题: 导入 React f...
在 SAP Hybris/Commerce 版本 2105 中构建 ant 时出现 java.lang.IllegalAccessError
我是 Hybris 新手,正在尝试设置 Hybris 最新版本,我尝试使用 ant clean all 构建它并收到以下错误。我正在使用 SAP Machine JDK 17,并且还在
强制 ant 在 Windows 上使用特定的 java 版本
我使用来自互联网的简单 build.xml,没有指定 java/可执行文件,如下所示。 我使用来自互联网的简单 build.xml,没有指定 java/可执行文件,如下所示。 <?xml version="1.0"?> <project name="the project" default="compile" basedir="."> <property name="src.dir" location="src" /> <property name="bin.dir" location="bin" /> <property name="lib.dir" location="lib" /> <path id="classpath"> <fileset dir="${lib.dir}" includes="**/*.jar" /> </path> <target name="init"> <!-- Create the time stamp --> <tstamp /> <!-- Create the build directory structure used by compile --> <mkdir dir="${bin.dir}" /> </target> <target name="clean" description="remove intermediate files"> <delete dir="${bin.dir}" /> </target> <target name="compile" depends="init" description="compile the Java source code to class files"> <javac srcdir="${src.dir}" destdir="${bin.dir}" classpathref="classpath" /> </target> </project> 以下是我的 Windows 上的几个 java 版本: where java C:\Program Files\Common Files\Oracle\Java\javapath\java.exe C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe G:\Program Files\Java\jdk1.8.0_301\bin\java.exe 我希望将这个特定版本的java与ant一起使用G:\Program Files\Java\jdk1.8.0_301\bin\java.exe。然而,ant 继续使用不同的以下 JDK 版本。 C:\Users\HOME>ant -Dant.build.javac.target=1.8.0_301 -Dant.build.javac.source=1.8.0_301 -Dant.java.version=1.8.0_301 -v | findstr /I "java" Detected Java version: 10 in: G:\jdk-10 BUILD FAILED C:\Users\HOME\build.xml:25: srcdir "C:\Users\HOME\src" does not exist! at org.apache.tools.ant.taskdefs.Javac.collectFileListFromSourcePath(Javac.java:1144) at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:1086) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99) at org.apache.tools.ant.Task.perform(Task.java:350) at org.apache.tools.ant.Target.execute(Target.java:449) at org.apache.tools.ant.Target.performTasks(Target.java:470) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1401) at org.apache.tools.ant.Project.executeTarget(Project.java:1374) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1264) at org.apache.tools.ant.Main.runBuild(Main.java:818) at org.apache.tools.ant.Main.startAnt(Main.java:223) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:284) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101) Total time: 0 seconds [javac] C:\Users\HOME\build.xml:25: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds 忽略该错误,因为我只关心检查我的 ant 使用哪个版本的 java。 我也尝试过C:\Users\HOME>ant -Dant.build.javac.target=1.8 -Dant.build.javac.source=1.8 -v | findstr /I "java",但也没有帮助。 我愿意接受不同的答案,但更喜欢将参数传递给 ant 命令以使用所需的 JDK 的解决方案。 这个想法是在使用 java versions 在我的主机上构建不同的应用程序时在 ant 之间切换。 java的子版本很重要所以我可能希望在java版本之间进行选择1.8.0_145和1.8.0_301 如果指定分叉的 javac 任务,您应该能够使用与默认版本不同的 JDK 版本的 javac。 <javac ... fork="yes" executable="${mycompiler}" 与一起奔跑 > ant -Dmycompiler C:\java\jdk-14\bin\javac.exe targets 您当然可能需要额外的 ant 设置来确保默认源/版本与替代 JDK 兼容。