Gostaria de fazer upload e implantar um jar existente no artifactory.
Há um pipeline de terceiros, sobre o qual não tenho controle algum, qual etapa 1 construirá um jar. O jar é então colocado em um host, em seu diretório de arquivos. Novamente, não tenho controle sobre o trabalho em si.
Mas eu posso ver quando entro manualmente no host que o jar está correto fazendo jar xf thejar.jar
. O conteúdo extraído teria todos os arquivos de classe apropriados.
Agora, minha parte, etapa 2, estou tentando carregar este jar em um artefato.
Entendo que há uma opção para executar mvn deploy
, mas isso executaria todas as etapas anteriores do ciclo de vida do maven. Como o jar está correto, gostaria de evitar essa duplicação (executar todas as etapas anteriores do ciclo de vida do maven) e apenas fazer upload do jar.
Até agora, encontrei duas soluções:
parece
mvn deploy:deploy
que esta solução não repete tudo, mas apenas tenta carregar o jarexecute
mvn jar:jar deploy:deploy
o mesmo, parece que esta solução não reexecuta tudo, mas apenas tenta carregar o jar
Entretanto, a solução 1 produziria o seguinte problema:
[INFO] ----------------------< com.example:mavendeploy >-----------------------
[INFO] Building mavendeploy 4.3
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- deploy:3.1.2:deploy (default-cli) @ mavendeploy ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.329 s
[INFO] Finished at: 2025-T19:26:20Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:3.1.2:deploy (default-cli) on project mavendeploy: The packaging plugin for project mavendeploy did not assign a file to the build artifact -> [Help 1]
Parece que nem detecta o jarro.
Enquanto a segunda solução produzirá esse problema.
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- jar:3.4.1:jar (default-cli) @ mavendeploy ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: /builds/path/to/jar/mavendeploy-4.3.jar
[INFO]
[INFO] --- deploy:3.1.2:deploy (default-cli) @ mavendeploy ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
Embora pareça detectar o jar correto corretamente, há este aviso, JAR will be empty
e também, embora o jar pareça estar realmente carregado no artifactory, o jar baixado do artifactory não contém nenhum dos arquivos de classes. Por quê?
Qual é a maneira correta de fazer upload de um jar existente no artifactory usando mvn deploy
(espero que sem ter que executar novamente todo o ciclo de vida do maven, já que o jar já está lá)?
O que fiz de errado na solução 1 ou na solução 2?
Para carregar um artefato existente, você precisa usar
deploy:deploy-file
Veja também https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html