Я настраиваю проект 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
.
Спасибо.