首先,我要说我是Ant的新手。就像之前一样,我只是在两天前才开始学习它以完成此任务。
我想要做的是创建一个“ master”蚂蚁脚本,该脚本调用其他几个蚂蚁脚本。例如:
Project A
- contains build.xml, target "makeProjectAjar"
- output: A.jar
Project B
- contains build.xml, target "makeProjectBjar"
- output: B.jar
Project C
- contains build.xml, target "makeProjectCjar"
- output: C.jar
Project D
- contains build.xml, target "finalPackage"
- Must first build Project A, Project B, Project C
- Copy A.jar, B.jar, C.jar to Project D
- Package all of this into D.jar
现在,我拥有用于A,B和C的所有单独版本。通过这个,我的意思是我可以从这些文件夹中的任何一个运行“
ant”,它将构建项目并生成一个jar文件。如果以这种方式构建A,B和C,则我有3个jar文件。然后,我可以将它们复制到D中并将其包装到最终的jar中。很好
但是我想要的是能够从Project D的build.xml中触发A,B和C构建。我已经尝试过:
<?xml version="1.0" encoding="UTF-8"?>
<project name="CommonJava" default="makeCommonJavaJar" basedir=".">
<import file="../Common/build.xml"/>
<import file="../CommonAndroid/build.xml"/>
<target name="makeCommonJavaJar" description="Create a jar for the CommonJava project"
depends="clean">
<mkdir dir="build" />
<jar jarfile="./build/commonjava.jar" includes="*.class" />
</target>
<target name="clean">
<delete dir="build" />
</target>
<target name="build+package" description="Build all prerequisites and package them">
<antcall target="makeCommonJar"/>
<antcall target="makeAndroidJar"/>
</target>
</project>
makeCommonJar是Common / build.xml(项目A)中的目标,而makeAndroidJar是../ CommonAndroid /
build.xml(项目B)中的目标。但是,似乎在使用时<import>
,它从调用文件夹的上下文中运行。意味着项目B引用的资源不可用,因为它是从项目D运行的。这有意义吗?
长问题简短…使用Ant,如何在其他项目中调用build.xml文件以便首先构建那些项目?
以下是一些一般性准则(不是规则,Ant非常宽松):
import
任务通常用于共享一些常见的构建机制,而不是像您正在执行的那样构建工作流。例如,要构建jar的目标,可以通过一些属性(例如目标目录)进行参数化。subant
和ant
任务,优选用于触发建立其他项目因此,这看起来像项目D的build.xml:
<project name="CommonJava" default="makeCommonJavaJar" basedir=".">
<target name="build-deps">
<ant antfile="../Common/build.xml" target="makeCommonJar"/>
<ant antfile="../CommonAndroid/build.xml" target="makeAndroidJar"/>
</target>
<target name="makeCommonJavaJar" depends="build-deps">
<mkdir dir="build" />
<jar jarfile="./build/commonjava.jar" includes="*.class" />
</target>
</project>
参见http://ant.apache.org/manual/Tasks/ant.html
我有两个Maven(GWT)项目,其中一个应该依赖于另一个。我只是添加了依赖项,比如: 这些类被正确引用,我可以在我的其他项目中使用它们。但如果我想触发maven构建,它会抱怨:“无法解析项目的依赖项:找不到工件myGroup:MyArtifact:jar:1.0-SNAPSHOT” 该项目没有jar,因为它是一个GWT Web应用程序。它有一个“战争”档案。我测试了一下论点,尝试了“pom”或“
由于butterknife依赖的错误,我无法构建android项目。 错误 任务': app: javaPreCompileDebug'执行失败。 无法解析配置的所有文件: app: dedegAnnotationProcessorClasspath。转换butterknife-compiler-8.6.0.jar失败(com.jakewharton:巴特切夫-编译器: 8.6.0)以匹配属性{a
我正在处理另一个关于我的构建的问题。gradle需要理解我的Android项目中的工作区项目依赖关系。我已经使用Java和Android有一段时间了,但我仍然很容易对添加依赖项的所有不同方法感到困惑。一种方法是放一个标签。libs/文件夹中的jar文件。另一种方法是具有工作区项目依赖关系。另一种方法(如果使用Android)是在Android选项菜单中添加项目依赖项?我觉得如果我真的理解了为什么会
我有两个gradle项目。A和B。A依赖于B。我还将B作为一组工件上传到artifactory本地服务器。我用了maven publish。然后我试着用B作为A中的依赖项。我试着用它作为maven依赖项,所以我写道 但是,它总是尝试从repo1下载JAR。我想我误解了什么。首先,我不太明白为什么我需要maven,我也不明白我的工件发布是否等于maven安装。如何使用B作为A的依赖项?我的看法是:在
我正在使用Gradle构建并打包一个非常简单的Spring启动应用程序(99%的静态内容)到带有嵌入式tomcat的jar中。 我尝试创建该jar,起初结果86k,没有启动,因为它缺少一些Spring Boot类。我得出结论,我制作的这个jar不包含应用程序的任何依赖项,既然我确实想要一个完全独立的jar,我应该做更多的研究。 这时,我发现建议将{configurations.compile.co
问题内容: 我有一个Eclipse插件项目,它取决于我在Eclipse工作区中拥有的其他项目。在“ Java Build Path”->“ Projects”选项卡下添加项目依赖项,并在“ Order and Export”中选择项目后,我得到了java.lang.NoClassDefFoundError。 我假设其他项目未正确包含在插件中。有谁知道如何解决这一问题? 谢谢,詹姆斯 问题答案: E