Помните выпуск частного сервера maven nexus

maven

Это первый раз, когда я использую приватный сервер nexus для загрузки моего пакета jar на склад.Я не понимаю всех видов поиска.После Baidu и Google я, наконец, понимаю процесс.

метод выпуска maven

Его можно грубо разделить на mvn deploy и mvn deploy:deploy-file.

  1. Первый заключается в добавлении конфигурации DistributionManagement в pom.xml и прямой загрузке пакета jar, pom.xml и других файлов в Nexus,
  2. Последний заключается в том, чтобы сначала упаковать пакет jar, а затем напрямую загрузить файл jar.

возникшие проблемы

mvn deploy:deploy-file -DgroupId=com.jpay -DartifactId=common-payment-sdk -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=./target/common-payment-sdk-0.0.1.jar -Durl=http://10.100.86.153:8081/repository/maven-snapshots/ -DrepositoryId=nexus-snapshots

mvn deploy:deploy-file -DgroupId=com.jpay -DartifactId=common-payment-sdk -Dversion=0.0.1 -Dpackaging=jar -Dfile=./target/common-payment-sdk-0.0.3.jar -Durl=http://10.100.86.153:8081/repository/maven-releases/ -DrepositoryId=nexus-release

Теперь поговорим о проблемах, с которыми я столкнулся.Сейчас я использую jpay для тестирования интегрированного платежа.После долгих стараний я наконец-то загрузил jar-пакет на нексус./.m2/repository/com/jpay Эта зависимость удалена. Попробуйте посмотреть, можете ли вы загрузить пакет зависимостей с частного сервера.Обнаружено, что во время установки mvn нет шага загрузки.Нет причин~

Решения

Поэтому укажите адрес приватного сервера и добавьте его в pom.xml:

<repositories>
    <repository>
        <id>nexus</id>
        <name>nexus</name>
        <url>http://10.100.86.153:8081/repository/maven-releases/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

Выполните mvn install еще раз, по-прежнему нет ответа, нет загрузки, а затем скомпилируйте сообщение об ошибке, что пакет зависимостей jpay не может быть найден. В это время я снова подумал, должен ли я упаковать все сторонние зависимости, когда я должен упаковать их? Итак, я добавил конфигурацию плагина в jpay pom.xml:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <appendAssemblyId>false</appendAssemblyId>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <!-- 此处指定main方法入口的class -->
                <mainClass></mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>assembly</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Упаковка снова, исходный пакет банок 160K стал 26M, попробуйте снова упаковать проект и, наконец, прошел.

Итак, я попытался посмотреть, упакованы ли пакеты jar других людей также со всеми зависимостями? Зайди в ~/.m2/repository и поищи чужие пакеты.Они все очень маленькие.Потом посмотри pom.xml.В нем много зависимостей.Открываю нексус и захожу найти пакет который я закачал.Смотри на pom.xml и обнаружите, что это всего лишь несколько строк:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jpay</groupId>
    <artifactId>payment-sdk</artifactId>
    <version>0.0.1</version>
</project>

Я вставил ~~~ Проблема здесь, должно быть, моя упаковка неверна, поэтому я добавил конфигурацию управления дистрибутивом в jpay pom.xml:

<distributionManagement>
   <repository>
      <id>nexus-release</id>
      <name>Nexus Releases Repository</name>
      <url>http://10.100.86.153:8081/repository/maven-releases/</url>
   </repository>
   <snapshotRepository>
      <id>nexus-snapshots</id>
      <name>Nexus Snapshots Repository</name>
      <uniqueVersion>false</uniqueVersion>
      <layout>legacy</layout>
      <url>http://10.100.86.153:8081/repository/maven-snapshots/</url>
   </snapshotRepository>
</distributionManagement>

Затем mvn deploy выполняет выпуск и видит успешную загрузку в nexus.Перейдите в nexus, чтобы проверить файл pom.xml, и, наконец, убедитесь, что в нем есть зависимость.

Удалите локальный ~/.m2/repository/com/jpay и снова упакуйте проект, и, наконец, пакет зависимостей можно будет получить с частного сервера.

На этом дело заканчивается, и я проверю, следует ли загружать файл развертывания вместе с pom после использования пакета mvn.