我正在使用 Apache Ivy 进行Java项目管理,以进行依赖项管理。
可以正确获取从Maven Central解析的依赖项,包括源和javadoc包;相反,从本地文件系统解析的库缺少资源。
我将源JAR添加到了项目树中包含库(lib
)的同一目录中,但是我无法理解如何指示Ivy检测和使用它们。
这是项目树的相关部分:
│ ivy.xml
│ ivysettings.xml
├───lib
│ │ org.eclipse.nebula.cwt.source_1.1.0.201804281520.jar
│ │ org.eclipse.nebula.cwt_1.1.0.201804281520.jar
│ │ org.eclipse.nebula.widgets.cdatetime.source_1.3.0.201804281520.jar
│ │ org.eclipse.nebula.widgets.cdatetime_1.3.0.201804281520.jar
ivysettings.xml
<?xml version="1.0" encoding="UTF-8"?>
<ivysettings>
<settings defaultResolver="maven" />
<resolvers>
<chain name="maven">
<ibiblio name="central" m2compatible="true" />
</chain>
<filesystem name="local">
<artifact pattern="${ivy.settings.dir}/lib/[artifact].[type]_[revision].[ext]" />
</filesystem>
</resolvers>
<modules>
<module organisation="org.eclipse.nebula" resolver="local" />
</modules>
</ivysettings>
ivy.xml
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="com.example" module="myproject" revision="1.0.0" status="release" />
<dependencies>
<dependency org="javax.activation" name="javax.activation-api" rev="1.2.0" />
<dependency org="org.eclipse.nebula" name="org.eclipse.nebula.cwt" rev="1.1.0.201804281520" />
<dependency org="org.eclipse.nebula" name="org.eclipse.nebula.widgets.cdatetime" rev="1.3.0.201804281520" />
</dependencies>
</ivy-module>
.ivy2
树的相关部分:
└───cache
│
├───javax.activation
│ └───javax.activation-api
│ │ ivy-1.2.0.xml
│ │ ivy-1.2.0.xml.original
│ │ ivydata-1.2.0.properties
│ │
│ ├───jars
│ │ javax.activation-api-1.2.0.jar
│ │
│ ├───javadocs
│ │ javax.activation-api-1.2.0-javadoc.jar
│ │
│ └───sources
│ javax.activation-api-1.2.0-sources.jar
│
├───org.eclipse.nebula
│ ├───org.eclipse.nebula.cwt
│ │ │ ivy-1.1.0.201804281520.xml
│ │ │ ivydata-1.1.0.201804281520.properties
│ │ │
│ │ └───jars
│ │ org.eclipse.nebula.cwt-1.1.0.201804281520.jar
│ │
│ └───org.eclipse.nebula.widgets.cdatetime
│ │ ivy-1.3.0.201804281520.xml
│ │ ivydata-1.3.0.201804281520.properties
│ │
│ └───jars
│ org.eclipse.nebula.widgets.cdatetime-1.3.0.201804281520.jar
我尝试在 ivysettings.xml 中编辑工件模式,以支持源程序包,但是例如${ivy.settings.dir}/lib/[artifact](.[type])_[revision].[ext]
不起作用因为尽管有圆括号,但始终期望.[type]
。这些常春藤功能似乎也是poorly documented。
我还避免重命名JAR,因为这些名称是该库的开发人员选择的名称,这样我们就可以升级它们,只需将新的JAR放入lib
目录中并更改{{1 }}属性在rev
文件中。
谢谢。