Как использовать весь проект Java внутри другого проекта Java, создавать и использовать классы и методы? - PullRequest
0 голосов
/ 24 апреля 2020

У меня возникла ситуация, когда у меня есть проект maven с несколькими предложениями и методами ... и мне нужно иметь те же классы и методы проекта для некоторых других проектов, которым они нужны.

После прочтения некоторых о Git подмодулях, Git поддеревьях и других способах выполнения sh этого. я решил экспортировать файл Jar с его зависимостями и скопировать его во все другие проекты в подкаталоге $ {basedir} / lib /. Таким образом, я делаю это достаточно простым для всех разработчиков в моей команде QA (мы не настолько опытные разработчики, как мы пришли из мира QA), а также я могу контролировать, что все они используют одни и те же библиотеки во всех проектах.

Я экспортировал в файл Jar с помощью плагина maven сборки, добавив его в мой файл POM в первом репо:

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>fully.qualified.MainClass</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>

И запустив

$ mvn clean compile assembly:single

У меня есть Jar файл в каталоге 'target', который я скопировал во все остальные репозитории. в каталоге 'lib' каждого репо.

Затем в POM-файлах других репозиториев я добавил в раздел их зависимостей POM:

<dependency>
    <groupId>myDep</groupId>
    <artifactId>myDep</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/myDep-1.0-SNAPSHOT-jar-with-dependencies.jar</systemPath>
</dependency>

Дело в том, что я не смог понять это как импортировать Jar в мои классы, чтобы использовать методы, которые мне нужны из этого импортированного Jar. Как я пытался импортировать, как

import myDep.* 

Но это не работает.

Не могли бы вы указать мне в правильном направлении? большое спасибо!

1 Ответ

0 голосов
/ 24 апреля 2020

Обычно перед началом использования Maven вы настраиваете некоторую инфраструктуру:

  1. сервер Nexus или Artifactory для артефактов (jars, wars et c.)

  2. сервер сборки, такой как Jenkins.

Затем вы создаете свои jar-файлы (без чего-либо вроде подключаемого модуля сборки maven) на Jenkins с помощью mvn clean deploy. Тогда они доступны в Nexus / Artifactory.

Если у разработчиков есть settings.xml, указывающий на правильный Nexus / Artifactory, они могут просто добавить

<dependency>
    <groupId>myDep</groupId>
    <artifactId>myDep</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

к своим pom.xml без указания пути или копирования чего-либо вокруг. Maven затем сделает волхвы c, чтобы разрешить эту зависимость от Nexus / Artifactory.

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