你好,我是apache ant和ivy的新手,我最近知道ant不支持依赖管理,所以我听说过IVY,它是ant的一个依赖管理器。现在的问题是,我已经在ivy.xml文件中添加了ivy依赖项
<ivy-module version="2.0">
<info organisation="com.mlen" module="testApp"/>
<dependencies>
<dependency org="net.sourceforge.jdatepicker" name="jdatepicker" rev="1.3.2"/>
</dependencies>
</ivy-module>
这是摇摆应用程序的jdatepicker。现在的问题是,当我尝试访问依赖类时,它没有导入类。ivy将依赖项下载到项目目录下的lib文件夹。
我的身材。xml文件
<project name="HelloWorld"
basedir="."
default="run">
<!-- xmlns:ivy="antlib:org.apache.ivy.ant">-->
<property name="src.dir" value="src"/>
<property name="lib.dir" value="lib"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>
<property name="main-class" value="com.mlen.testApp.HelloWorld"/>
<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
<ivy:retrieve/>
</target>
<target name="compile" depends="resolve">
<mkdir dir="${classes.dir}"/>
<javac includeantruntime="false" srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
<copy todir="${classes.dir}">
<fileset dir="${src.dir}" excludes="**/*.java"/>
</copy>
</target>
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
<!--how can i get ivy to note what the class path should be?-->
<attribute name="Class-Path" value="log4j-1.2.17.jar"/>
</manifest>
</jar>
</target>
<target name="run" depends="jar">
<java fork="true" classname="${main-class}">
<classpath>
<path refid="classpath"/>
<path location="${jar.dir}/${ant.project.name}.jar"/>
</classpath>
</java>
</target>
<target name="clean-build" depends="clean,jar"/>
<target name="main" depends="clean,run"/>
</project>
最后是我的主类。
public class HelloWorld extends JFrame {
public HelloWorld(){
UtilDateModel model = new UtilDateModel();
JDatePanelImpl datePanel = new JDatePanelImpl(model);
JDatePickerImpl datePicker = new JDatePickerImpl(datePanel);
add(datePicker);
setSize(300, 200);
setVisible(true);
}
public static void main(String[] args) {
new HelloWorld();
}
}
为什么不导入到类中,我做得对吗????
Ivy是ANT而不是eclipse的依赖管理。如果您想让ivy解析Eclipse类路径,您需要安装ivy插件(参见ivyDE)
你的例子也适用于我。正如@deathangel908指出的,您需要正确设置包声明并从第3方jar导入类。
├── build.xml
├── ivy.xml
└── src
└── com
└── mlen
└── testApp
└── HelloWorld.java
package com.mlen.testApp;
import javax.swing.*;
import net.sourceforge.jdatepicker.impl.*;
public class HelloWorld extends JFrame {
public HelloWorld(){
UtilDateModel model = new UtilDateModel();
JDatePanelImpl datePanel = new JDatePanelImpl(model);
JDatePickerImpl datePicker = new JDatePickerImpl(datePanel);
add(datePicker);
setSize(300, 200);
setVisible(true);
}
public static void main(String[] args) {
new HelloWorld();
}
}
我创建了与你相同的文件结构,ivy.xml和build.xml没有错误,ant run任务运行良好。Ivy按照预期解析了jar文件,ant Target在类路径中包含了正确的目录。我想你只是忘记将类导入HelloWorld.java
import net.sourceforge.jdatepicker.impl.UtilDateModel;
//TODO import more
为了避免这些错误,您可以使用IDE(Eclipse、Netbean、Idea w/e),它们都支持Ant和Ivy。
如果您没有忘记导入类。你需要更具体一些,找到你的蚂蚁目标失败的阶段。
compile
,尝试回显classpath
并使用javac src/HelloWorld.java-cp./lib/jdatepicker-1.3.2.jar
和您的类路径运行相同的ant命令。run
尝试使用java-jar…
通过右键单击项目并选择“配置”,我将一个动态web项目转换为一个maven项目- 然后,右键点击项目- 现在所有的JAR和类都可以在Maven依赖项部分中找到。下面是我的项目结构截图。 项目结构 下面是maven dependency部分的屏幕截图。 Maven依赖项部分 但是,我无法导入任何包或类形式的依赖jars到我的任何Java类(例如:HttpServices.java)在src文件夹中。
我有一个项目,我正在覆盖到gradle。该项目有一些依赖项,如junit等。依赖项的Jars被下载,但这些Jars的依赖项没有下载。build.gradle文件如下 为什么测试:项目:17.20.快照不需要下载罐子?这个东西适用于蚂蚁常春藤项目 更新 1 我加了常春藤。测试项目的xml文件
由于butterknife依赖的错误,我无法构建android项目。 错误 任务': app: javaPreCompileDebug'执行失败。 无法解析配置的所有文件: app: dedegAnnotationProcessorClasspath。转换butterknife-compiler-8.6.0.jar失败(com.jakewharton:巴特切夫-编译器: 8.6.0)以匹配属性{a
我的gradle项目(“osgiapp”)依赖于一个OSGI项目(“osgidep”),该项目具有以下MANIFEST.MF条目: 这里导出了两个包: test.lib包由osgidep.jar中包含的lib/lib.jar提供 test.osgidep包由osgidep.jar本身提供 现在,我的建筑。Gradle看起来是这样的: 当我试图构建使用两个导出包的代码时:
问题内容: ( - >)中的“ 自动构建” 选项的目的是什么?我的将始终被检查。但是,每当我进行一些Java代码更改时,我仍然必须进行完整构建。有人告诉我应该经常检查它。我认为这样做没有任何好处。请有人解释。 __ 问题答案: 是的,您仍然必须进行构建- 但是在保存时它会自动完成(不是像Ant外部构建那样的外部构建,而是“内部”构建)。如果您不想在保存时进行构建,则可以取消选中该框。我相信,自动生
我有一个多项目的构建设置与gradle将包含多个android应用程序和库。 我想应用某些分级插件只对一些子项目。(比如android gradle插件只到android子项目)因此我在和插件声明中添加了类路径依赖项到两个android子项目: 和 。问题是gradle找不到android gradle插件: 错误:(%1,%1)评估项目“:ShopPr:Presentation”时出现问题。找不