Построить проект maven с помощью встроенных библиотек
Как создать maven pom, который будет строить проект, можно ли включить в свой проект напрямую с моим проектом, не беря их из репозитория? кто-нибудь это делал раньше?
ИЗМЕНИТЬ:
Я не хочу, чтобы он выполнялся путем сборки сборки с помощью jar-зависимостей, я хочу, чтобы она была работоспособной. Таким образом, любой, у кого есть этот проект, может его построить, даже если в любом репозитории нигде не найти банки.
Ответы
Ответ 1
1 Либо вы можете включить эту банку в свой путь класса приложения
2 вы можете установить конкретный файл jar в reopos maven на
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
Ответ 2
Возможные решения включают ваши зависимости в src/main/resources, а затем в вашем pom:
<dependency>
groupId ...
artifactId ...
version ...
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/yourJar.jar</systemPath>
</dependency>
Примечание: системные зависимости не копируются в приведенные jar/war
(см. Как включить системные зависимости в войну, построенные с использованием maven)
Ответ 3
Создайте папку репозитория в вашем проекте. Пусть возьмем
${project.basedir}/src/main/resources/repo
Затем установите свою настраиваемую банку в это репо:
mvn install:install-file -Dfile=[FILE_PATH] \
-DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] \
-Dpackaging=jar -DlocalRepositoryPath=[REPO_DIR]
Наконец, добавьте следующие определения репо и зависимостей в проекты pom.xml:
<repositories>
<repository>
<id>project-repo</id>
<url>file://${project.basedir}/src/main/resources/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>[GROUP]</groupId>
<artifactId>[ARTIFACT]</artifactId>
<version>[VERS]</version>
</dependency>
</dependencies>
Ответ 4
Почему бы не запустить что-то вроде Nexus, ваше собственное maven-репо, которое вы можете загрузить сторонними собственными файлами jar, а также прокси другим публичным репозитории, чтобы сохранить на полосе пропускания?
У этого также есть веские причины для запуска вашего собственного менеджера хранилища maven.
Ответ 5
Вы можете получить его из своего локального драйвера, как показано ниже:
<dependency>
<groupId>sample</groupId>
<artifactId>com.sample</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/yourJar.jar</systemPath>
</dependency>
Ответ 6
Очень быстрый и грязный способ - указать локальный файл:
<dependency>
<groupId>sampleGroupId</groupId>
<artifactId>sampleArtifactId</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>C:\DEV\myfunnylib\yourJar.jar</systemPath>
</dependency>
Однако это будет работать только на вашем компьютере (очевидно), для общего доступа обычно имеет смысл использовать надлежащий архив m2 (nexus/artifactory) или если у вас его нет или вы не хотите его настраивать локальный структурированный архив maven и настройте "хранилище" в вашем pom:
локальный:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://C:/DEV//mymvnrepo</url>
</repository>
</repositories>
удаленный:
<repositories>
<repository>
<id>my-remote-repo</id>
<url>http://192.168.0.1/whatever/mavenserver/youwant/repo</url>
</repository>
</repositories>
Ответ 7
Хороший способ добиться этого - иметь зеркальный сервер Maven, такой как Sonatype Nexus. Он бесплатный и очень простой в настройке (веб-приложение Java). С Nexus можно иметь частный (командный, корпоративный и т.д.) Репозиторий с возможностью развертывания сторонних и внутренних приложений в нем, а также регистрировать другие хранилища Maven как часть одного и того же сервера. Таким образом, локальные настройки Maven будут ссылаться только на один закрытый сервер Nexus, и все зависимости будут разрешены с его помощью.
Ответ 8
Вы можете использовать maven-assembly-plugin и создать банку со всеми включенными зависимостями.
Ответ 9
Вы можете добавить банку в свой проект и запутаться с плагином maven-assembly-plug-in или добавить банку в свой локальный репозиторий:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true
Where: <path-to-file> the path to the file to load
<group-id> the group that the file should be registered under
<artifact-id> the artifact name for the file
<version> the version of the file
<packaging> the packaging of the file e.g. jar
Ответ 10
Я думаю, что "правильное" решение состоит в том, чтобы добавить ваши собственные библиотеки в свой собственный репозиторий. Это должно быть просто: создать pom для вашего проекта библиотеки и опубликовать скомпилированную версию в вашем репозитории. Добавьте этот репозиторий в список репозиториев для вашего почтового проекта и выполните сборку. Я считаю, что это сработает для вас.
Ответ 11
Создайте новую папку, скажем local-maven-repo
в корне вашего проекта Maven.
Просто добавьте локальное репо, используя <project>
вашего pom.xml
:
<repositories>
<repository>
<id>local-maven-repo</id>
<url>file:///${project.basedir}/local-maven-repo</url>
</repository>
</repositories>
Затем для каждой внешней банки, которую вы хотите установить, зайдите в корень вашего проекта и выполните:
mvn deploy:deploy-file -DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] -Durl=file:./local-maven-repo/ -DrepositoryId=local-maven-repo -DupdateReleaseInfo=true -Dfile=[FILE_PATH]
(Скопировано из мой ответ по аналогичному вопросу)