Построить проект 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]

(Скопировано из мой ответ по аналогичному вопросу)