Загрузите файлы jar с локального дискового пространства в репозиторий .m2, используя pom. xml - PullRequest
1 голос
/ 09 января 2020

Я работаю над перемещением простого java проекта (который довольно старый) на основе Maven, и в текущем проекте все необходимые банки хранятся в папке lib.

Для каждой банки в lib папка, я ищу соответствующую зависимость в центральном репозитории maven - https://mvnrepository.com/ и добавляю эту зависимость в pom.xml

Но есть некоторые банки, которые я не могу найти в центральном репозитории Maven и у меня нет источника в команде, чтобы помочь определить местоположение (в случае третьей стороны).

Одним из способов является то, что я могу загрузить эти jar-файлы в некоторый репозиторий, например Nexus и в pom. xml, я могу упомянуть его URL-адрес в теге repository, поэтому после нажатия mvn install они будут добавлены в .m2

Но на данный момент у меня также нет места, куда я могу загрузить эти банки. Поэтому я положу их в одну папку на моей машине.

Просто хотел узнать, есть ли в maven какой-либо способ (упоминание чего-то в pom.xml), который будет указывать на эту папку (в случае, если jar недоступен в центральном репозитории maven) и загружать ее в .m2

Ответы [ 3 ]

5 голосов
/ 09 января 2020

Если у вас нет репозитория maven для использования, первый вариант, который я могу себе представить, это установка JAR сторонних производителей с maven в вашем репозитории maven локали, вы можете сделать это двумя способами:

1) Командная строка : mvn install: install-file -Dfile = -DgroupId = -DartifactId = -Dversion = -Dpackaging = Вот официальный mav , устанавливающий сторонние JAR-файлы

2) Использование maven-install- Плагин (Например, для проекта я распространял проект с jar-файлами внутри для распространения среди всех разработчиков в команде в качестве настройки среды):

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <groupId>some_group_id</groupId>
                <artifactId>some_artifact_id</artifactId>
                <version>some_version</version>
                <packaging>jar</packaging>
                <file>path to jar</file>
                <generatePom>true</generatePom>
            </configuration>
            <executions>
                <execution>
                    <id>install-jar-lib</id>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                    <phase>validate</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>

Редактировать: я прочитал другой ответ, который предлагает использовать systemPath в зависимость.

Конечно, это варианты, но в оригинальном топи c спросили: «Просто хотел узнать, есть ли в maven какой-либо способ (упоминание чего-то в пом. xml), который будет укажите на эту папку (в случае, если jar недоступен в центральном репозитории maven) и загрузите ее в .m2 "

Использование systemPath не сделает этого, и потребуется, чтобы jar всегда был доступно во всех системах по одному пути. Я использовал его несколько раз, и он хорошо работает, в основном, над проектами, которыми вам не нужно делиться с другими членами команды. Я бы не рекомендовал, представьте себе сценарий, в котором команда использует разные ОС (windows и linux), вы должны настроить разные профили, активируя их ОС, или иметь какой-либо путь, определенный одинаково для всех систем). В дополнение к области действия системы, поведение аналогично «предоставленному» при включении зависимости в экземпляр WAR или EAR, например. По моему опыту, установка в локальное хранилище с банками с шагом настройки имеет меньше недостатков.

Надеюсь, что смогу помочь.

Увидимся

3 голосов
/ 09 января 2020

Используйте приведенную ниже зависимость для включения банки, доступной на локальном компьютере для maven.

<dependency>    
  <groupId>groupid</groupId>    
  <artifactId>artifactid</artifactId>   
  <version>1.0</version>    
  <scope>system</scope> 
  <systemPath>${basedir}\lib\JAR_NAME.jar</systemPath>  
</dependency>
0 голосов
/ 09 января 2020

Если вы хотите сохранить файлы jar в локальном хранилище, используйте следующую команду.

Вы можете сделать это с помощью eclipse и командной строки.

eclips : install: install- file -Dfile = МЕСТНЫЙ ПУТЬ JAR -DgroupId = com.xxx.xx -DartifactId = ИМЯ JAR -Dpackaging = jar -Dversion = ВЕРСИЯ JAR

командная строка: mvn install: install- file -Dfile = LOCAL JAR PATH -DgroupId = com.xxx.xx -DartifactId = JAR NAME -Dpackaging = jar -Dversion = JAR-VERSION

Вы можете использовать его с помощью нижеуказанной зависимости в pom .

         <dependency>
              <groupId>com.xxx.xx</groupId>
               <artifactId>JAR NAME</artifactId>
              <version>JAR-VERSION</version>
         </dependency>
...