#java #maven
#java #maven
Вопрос:
Я пытаюсь получить относительный путь к зависимости Maven внутри a pom.xml
. Вот структура моего проекта:
|-Project
|--firstproject
|---src
|...
|pom.xml
|--secondproject
|---src
|...
|pom.xml
Вот pom.xml
firstproject
где я импортирую secondproject
как зависимость.
...
<dependency>
<groupId>com.foo</groupId>
<artifactId>secondproject</artifactId>
<version>1.0.0</version>
</dependency>
...
Я хотел бы иметь системный путь к зависимости Maven следующим образом:
<properties>
<my.lib.path>${maven.dependency.com.foo.secondproject}</my.lib.path>
</properties>
Возможно ли это? Может быть, есть другой способ сделать это?
Я знаю, что могу использовать maven-antrun-plugin
, но мне не нужен финал jar
. Я хочу, чтобы относительный путь к зависимости выглядел так: /home/user/projects/Project/secondproject
. Есть ли какой-нибудь способ?
Комментарии:
1. Мой первый вопрос: зачем вам это нужно? Какую проблему вы пытаетесь решить?
2. @khmarbaise мне это нужно, чтобы передать путь в качестве параметра другому выполнению maven
3. Теперь это становится более волшебным? Какое выполнение Maven и почему?
4. @khmarbaise что-то вроде:
<execution>...<configuration><arguments>run --path=${my.lib.path}</arguments></configuration></execution>
5. Где вам это нужно? Выполнение? Для чего? Пожалуйста, сделайте полный пример вашего проекта… и что это
run...
такое? С какой целью?
Ответ №1:
Это плохая идея и плохая практика, когда дело доходит до зависимостей Maven.
Прежде всего, ваши проекты всегда должны быть относительно расположены друг к другу, что означает, что ваша среда сборки должна иметь их вместе. Это приводит к сборкам, которые могут не повторяться, поскольку нет абсолютно никакой гарантии, что второй проект не изменился бы между сборками первого проекта.
Во-вторых, обычный способ объединения нескольких связанных проектов — вместо этого иметь подпроекты. Таким образом, ваш первый проект может зависеть от вашего второго проекта без каких-либо головных болей.
В противном случае лучшей альтернативой будет публикация второго проекта в вашем локальном репозитории m2 или в вашем хранилище репозиториев и удаление его в вашем первом проекте.
Комментарии:
1. Спасибо за ответ. Я знаю, что это плохая практика, но мне нужен этот путь, но не для maven. Я просто использую maven для передачи его в качестве параметра выполнения для другого инструмента. Вот почему мне это нужно. Знаете ли вы, как это сделать, не публикуя его в репозитории m2?
2. @MaxM Если вам нужны зависимости в одном месте для запуска какого-либо инструмента, было бы лучше использовать плагин зависимостей maven вместо того, чтобы пытаться определить пути. Идеально было бы, если бы вы задали другой вопрос, который описывает полный вариант использования, включая инструмент, которому вы хотите отправить пути.
3. @JFabianMeier спасибо за ваше предложение, но вы знаете, как я могу получить относительный путь зависимости в pom.xml ?
4. @MaxM Извините, но я пытаюсь помочь людям встать на правильный путь. Я не буду отвечать на вопросы, подобные приведенному выше, если не буду убежден, что это правильное решение проблемы. Чтобы знать, я думаю, вы просто считаете , что вам нужны относительные пути, потому что вы на неправильном пути. Смотрите: я всего лишь третий эксперт, пытающийся убедить вас, но настаиваю на том, чтобы получить ответ на вопрос.