Плющ - Как определить исходный артефакт для разрешенных файловой системой зависимостей - PullRequest
0 голосов
/ 16 декабря 2018

Я настраиваю проект Java, используя Apache Ivy для управления зависимостями.

Зависимости, разрешенные из 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] всегда ожидаетсянесмотря на круглые скобки.Кажется также, что эти функции Ivy плохо документированы .

Я бы также не стал переименовывать JAR, потому что эти имена были выбраны разработчиками этих библиотек, таким образом, мы могли бы обновитьони просто помещают новые файлы JAR в каталог lib и изменяют атрибуты rev в файле ivy.xml.

Спасибо.

...