Как я могу заставить Айви связать зависимости для МОИХ зависимостей в их собственный jar? - PullRequest
0 голосов
/ 22 декабря 2018

В моем проекте у меня есть ровно одна зависимость (прямо сейчас, рано!) - Hibernate.В моей конфигурации Ivy у меня есть следующее:

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
    <dependency org="org.hibernate" name="hibernate-core" rev="5.4.0.Final" conf="sources->sources"/>
    <dependency org="org.hibernate" name="hibernate-core" rev="5.4.0.Final" conf="binaries->default"/>
</dependencies>

И в моем build.xml у меня есть это:

<ivy:retrieve conf="sources" pattern="war/WEB-INF/lib/[conf]/[artifact](-[classifier]).[ext]"/>
<ivy:retrieve conf="binaries" pattern="war/WEB-INF/lib/[artifact](-[classifier]).[ext]"/>       

Теперь, в моей папке lib, у меня есть папканазвал источники ровно одной банкой, hibernate-core-sources.jar - отлично !!Но в самой папке lib у меня нет точно одного jar - у меня есть 18 jar, по одному на каждую из зависимостей Hibernate (и бабушки и дедушки и т. Д.)

Что я действительно хотел бы увидеть, так эточто-то вроде hibernate-core.jar и hibernate-core-deps.jar.

Возможно ли что-то подобное?Если это не так, возможно ли будет иметь значение hibernate-core.jar и my-app-deps.jar?И если ЭТО невозможно, можно ли просто объединить все это в один my-app-deps.jar?

Я не очень разбираюсь в Айви, поэтому чем яснее ваш ответ, тем лучше!

1 Ответ

0 голосов
/ 24 декабря 2018

Это возможно, но вы должны знать, что когда вы создаете путь к классам, вы можете в конечном итоге пропустить некоторые классы и выбросить NoClassDefFoundError во время выполнения.Решение состоит в том, чтобы вызывать ivy resol один раз с transitive, установленным на false, и второй раз, когда он установлен на true (по умолчанию).После каждого из них вы должны вызывать retrieve , но с разными шаблонами получения, поэтому папка с непереходной (hibernate-core.jar) к lib и транзитивная к временной папке, из которой вы можете создать hibernate-core-deps.jar.

...