1. Fundo
Recentemente, alguns kits de ferramentas feitos por você precisam ser extraídos separadamente 在打包的时候,同时上传到自己的maven私服仓库,供别人引用,并且还能够引用的时候看到源码
. Porém, no processo de upload, sempre falha e falha, principalmente ficando com raiva. No final, finalmente consegui e registrei as etapas, na esperança de ajudar os necessitados.
2. Passos
Deixe-me falar sobre meus requisitos primeiro:
- O empacotamento local pode carregar automaticamente o armazém do servidor privado maven.
- Depois de ser citado por outros, você pode ver o código-fonte e os comentários.
2.1 Modificar pom.xml
2.1.1 Especifique o endereço do depósito de upload
pom.xml
Primeiro, você precisa adicionar o seguinte parágrafo ao seu projeto
<distributionManagement>
<!--稳定版本的仓库地址,必须是允许上传的私服地址-->
<repository>
<id>releases</id>
<url>http://maven.aaaaaa.com/nexus/content/repositories/thirdparty</url>
</repository>
<!--开发版本的仓库地址,必须是允许上传的私服地址-->
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://maven.aaaaaa.com/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
Para o nosso número de versão de projeto usual é semelhante a XX-SNAPSHOT
este, este tipo é a versão de desenvolvimento de dados, que será 版本号+时间戳
incrementada na forma de após o upload para o servidor privado, e deve especificar <snapshotRepository>
o endereço para upload.
Na imagem acima, id
será dito mais tarde que o endereço aqui url
corresponde ao endereço do seu armazém. Você pode visitar um endereço semelhante no navegador http://maven.aaaaaa.com/nexus
, inserir a senha da conta e fazer login. 4
O endereço correspondente à imagem abaixo é:
Deve-se notar que, porque na foto acima, temos vários armazéns. Carreguei-os nos 3
armazéns correspondentes. Você pode seguir o endereço real do seu armazém.
Além disso, id
o correspondente releases
na verdade corresponde ao maven
arquivo de configuração especificado conf/setttings.xml
, conforme mostrado na figura abaixo: Se o rótulo correspondente não estiver configurado no
correspondente , ele também precisa ser adicionado. Por exemplo:settings.xml
<servers>
<servers>
<server>
<!--与2.1.1中的id值对应-->
<id>releases</id>
<!--账号密码需要与私服登录账号密码一致-->
<username>admin</username>
<password>znxd</password>
</server>
</servers>
Além disso, observe que a senha da conta do armazém precisa estar correta.
2.1.2 Adicionar plug-in de código-fonte
A configuração acima é apenas para especificar o endereço do warehouse, pois as pessoas que baixam as dependências precisam poder ver o código fonte, então também há a necessidade de um plug-in, maven-source-plugin
. Encontre o projeto novamente pom.xml
, adicione o seguinte plugin:
<!-- 上传源码 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
Finalmente, resuma pom.xml
a localização dessas duas coisas novas agora:
<project>
<!-----------省略多余的依赖---------->
<build>
<plugins>
<!-----------省略多余的plugin---------->
<!-- 上传源码 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>releases</id>
<url>http://maven.aaaaa.com/nexus/content/repositories/thirdparty</url>
</repository>
</distributionManagement>
</project>
Observação: spring-boot-maven-plugin
os plug-ins não podem ser referenciados. Assim que esse plug-in entrar em vigor, significa que o pacote jar que você está criando atualmente é um pacote executável, não o kit de ferramentas que carregamos no servidor privado.
2.2 Execução do Comando
Após a conclusão da configuração, você pode executar o comando, que pode ser realizado por dois comandos, um é idea
executado na ferramenta de desenvolvimento e o outro é o comando através da variável de ambiente mvn
.
Observe que não importa qual dos seguintes comandos você usa, você precisa primeiro prestar atenção ao número da versão. Se a sua versão do pacote existir no servidor privado, ela definitivamente falhará ao empacotar e carregar, e um erro pode ser relatado : Return code is: 400, ReasonPhrase: Bad Request
.
Portanto, não se esqueça de alterar a versão. Como mostrado abaixo:
2.2.1 Execução na ideia
Se a sua ferramenta de desenvolvimento for idea
, de fato, eclipse
a mesma, é recomendável utilizar este método.
Na ferramenta de desenvolvimento, encontre o da direita maven project
, conforme a figura abaixo:
o comando final é realmente executado clean deploy
. Se o log a seguir aparecer após a execução, significa que foi bem-sucedida.
[INFO] Building jar:*******
[INFO] Installing **** to *****
[INFO] --- **** Uploading:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
Obviamente, você também pode visitá-lo por meio de um navegador para descobrir se existe um pacote jar correspondente no depósito.
2.2.2 execução do comando mvn
Se você quiser usar mvn
comandos, você precisa prestar atenção na configuração das variáveis de ambiente maven. Não vou falar sobre como configurar comandos mvn aqui. Aqui estão as etapas e pontos a serem observados.
Primeiro, abra o diretório onde o projeto está localizado, e abra o diretório atual através do `cmd, conforme a figura a seguir:
Execute o comando da seguinte forma:
mvn -s "C:\Program Files\apache-maven-3.5.011\conf\settings-154waiwang.xml" deploy
onde -s
é --settings
uma abreviação de .
Eu também estava parado aqui. Sempre pensei que porque eu maven
especifiquei maven_home
/ ao configurar a variável de ambiente m2_home
, acho que quando eu usar mvn
o comando, ele usará automaticamente o settings.xml
arquivo correspondente para empacotamento, e então não é, então por que o acima precisa ser -s
especificado passando settings.xml
.
Se não for especificado, um erro será relatado Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]
, o que provavelmente significa nenhuma permissão. Parece que, se não for especificado, um arquivo padrão será usado, porque não há senha de conta correspondente nesse arquivo, portanto, um erro será relatado.
2.3 Dependência após o sucesso
Depois que o upload for bem sucedido, você pode encontrá-lo através do endereço, conforme a figura a seguir, significa sucesso:
3. Expansão
Por exemplo, se você fizer esse pacote de dependências, pode haver uma atualização posterior, mas se o pacote de dependências anterior tiver sido usado por outros, é impossível notificar os usuários um a um. O próprio Maven fornece essa função de baixar automaticamente as versões superiores. Necessário version
alterar o valor da etiqueta. do seguinte modo:
<dependency>
<groupId>com.agri</groupId>
<artifactId>znxd-framework</artifactId>
<version>[1.0,)</version>
</dependency>
onde [1.0,)
significa atualizar 1.0
o pacote mais recente a partir da versão. Isso tem a vantagem de que, quando seu pacote de extensão for atualizado para um 1.0
pacote maior, o projeto do usuário mudará automaticamente para o pacote mais recente. Dessa forma, quando você escreve um código errado, pode atualizar secretamente para o pacote mais recente sozinho para evitar constrangimentos.