常春藤-如何为文件系统解析的依赖项定义源工件

时间:2018-12-16 10:35:37

标签: java ivy

我正在使用 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文件中。

谢谢。

0 个答案:

没有答案