Как разрешить maven зависимость явно из аргументов командной строки? - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть проект A, который зависит от артефакта B. Я немного взломал B и хочу увидеть его в A. Поэтому я не хочу, чтобы A использовал версию в моем локальном хранилище, вместо этого я хочу Aиспользовать мою взломанную версию B.

Я ищу решение, которое может указать my-hacked-B.jar как зависимость A, например:

cd A && mvn package -Ddependency.org.groupB.B.jar.path=path/to/my-hacked-B.jar

Этовозможно, или я должен установить модифицированный B в моем локальном хранилище?

Ответы [ 4 ]

2 голосов
/ 07 декабря 2011

Вы не можете сделать это в командной строке, но вы можете установить область зависимостей на system в pom.xml и указать путь к зависимости.

<dependency>
  <groupId>org.groupB</groupId>
  <artifactId>B</artifactId>
  <version>2.0</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/path/to/hacked-B.jar</systemPath>
</dependency>
1 голос
/ 08 декабря 2011

Нет способа разрешить зависимость из командной строки, но есть способ разрешить maven разрешать зависимость извне.

Я создал временную оболочку pom.xml, которая объединяет два проекта. Работает без установки чего-либо в локальный репозиторий.

Единственная проблема в том, что я не могу использовать абсолютный путь в <module/>.

См. http://maven.apache.org/pom.html#Aggregation

0 голосов
/ 26 апреля 2016

Немного поздно :) Вы можете сделать это с помощью свойств:

<properties>
    <org.groupB.B.scope>compile</org.groupB.B.scope>
    <org.groupB.B.path></org.groupB.B.path>
</properties>

<dependency>
    <groupId>org.groupB</groupId>
    <artifactId>B</artifactId>
    <version>2.0</version>
    <scope>${org.groupB.B.scope}</scope>
    <systemPath>${org.groupB.B.path}</systemPath>
</dependency>

, а затем:

mvn package -Dorg.groupB.B.scope=system -Dorg.groupB.B.path=path/to/my-hacked-B.jar
0 голосов
/ 07 декабря 2011

Вы можете mvn clean install свою взломанную версию в своем локальном репозитории Maven, поверх версии, которую вы скачали из сети. Вам нужно убедиться, что pom projecjt B отражает версию, от которой вы зависите, и , а не версию моментального снимка (или, проще говоря, версию проекта B, которой вы должны mvn clean install соответствовать версия, необходимая вам в проекте A; неважно, редактируете ли вы помпон A или помпа B).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...