Tenho um JAR em meu projeto Android e quero que ele seja adicionado ao APK final. Ok, aqui vou eu:
<dependency>
<groupId>com.loopj.android.http</groupId>
<artifactId>android-async-http</artifactId>
<version>1.3.2</version>
<type>jar</type>
<scope>system</scope>
<systemPath>${project.basedir}/libs/android-async-http-1.3.2.jar</systemPath>
</dependency>
Mas quando estou correndo mvn package
, recebo um aviso:
[WARNING] Some problems were encountered while building the effective model for **apk:1.0
[WARNING] 'dependencies.dependency.systemPath' for com.loopj.android.http:android-async-http:jar should not point at files within the project directory, ${project.basedir}/libs/android-async-http-1.3.2.jar will be unresolvable by dependent projects @ line 36, column 25
E no APK final não há JARs.
Como faço para corrigir isso?
Respostas:
Você precisará adicionar o jar ao seu repositório maven local. Alternativamente (melhor opção) especifique o repositório apropriado (se houver) para que possa ser baixado automaticamente pelo maven
Em qualquer caso, remova a
<systemPath>
tag da dependênciafonte
maven install
em todos os computadores onde quero construir esse projeto (infelizmente não encontrei este JAR nos repos). Obrigado! :)Não sei o verdadeiro motivo, mas o Maven incentiva os desenvolvedores a instalarem todas as bibliotecas (personalizadas também) em alguns repositórios do maven, portanto,
scope:system
não é muito apreciado. Uma solução simples é usarmaven-install-plugin
siga o uso:
escreva sua dependência desta forma
então, adicione maven-install-plugin
preste atenção
phase:clean
, para instalar sua biblioteca personalizada em seu repositório, você deve executarmvn clean
e entãomvn install
fonte
<phase>process-resources</phase>
vez de<phase>clean</phase>
. A fase de recursos do processo parece mais apropriada para tal cenário e é sempre chamada antes da fase de compilação.clean
fase é muito enganoso, não faz parte do ciclo de vida padrão e distorce o significado declean
. Além disso, a mudança sugerida para usar uma fase no ciclo de vida padrão (por exemplo,validate
ouprocess-resources
) irá falhar em uma situação de vários módulos, pois a resolução de dependência é tentada pelo agregador, antes de qualquer meta customizada ser executada para módulos filhos.Experimente isso.
fonte
O escopo do sistema foi projetado apenas para lidar com arquivos de 'sistema'; arquivos em algum local fixo. Arquivos em
/usr/lib
, ou${java.home}
(por exemplotools.jar
). Ele não foi projetado para oferecer suporte a.jar
arquivos diversos em seu projeto.Os autores se recusaram intencionalmente a fazer com que as expansões do nome do caminho funcionassem corretamente para desencorajá-lo. Como resultado, em curto prazo, você pode usar
install:install-file
para instalar no repo local e, algum dia, usar um gerenciador de repo para compartilhar.fonte
Use um gerenciador de repositório e instale este tipo de jars nele. Isso resolve todos os seus problemas e para todos os computadores da rede.
fonte
docker run -d -p 8081:8081 --name nexus sonatype/nexus3
- consulte hub.docker.com/r/sonatype/nexus3 para obter detalhes.Experimente esta configuração. Funcionou para mim:
fonte
mvn install: install-file -DgroupId = com.paic.maven -DartifactId = tplconfig-maven-plugin -Dversion = 1.0 -Dpackaging = jar -Dfile = tplconfig-maven-plugin-1.0.jar -DgeneratePom = true
Instale o jar no repositório local.
fonte
Graças ao Ging3r, consegui a solução:
Siga esses passos:
não use na tag de dependência. Use a seguinte tag de dependências no arquivo pom.xml:
use o seguinte código na tag de plug-ins no arquivo pom.xml:
Estou incluindo 3 frascos da pasta lib:
Finalmente, use
mvn clean
and thenmvn install
or 'mvn clean install' e apenas execute o arquivo jar da pasta de destino ou do caminho onde instalar (vermvn install
log):java -jar abc.jar
nota: lembre-se de uma coisa se você estiver trabalhando no jenkins, primeiro use
mvn clean
e, em seguida, omvn clean install
comando funcionará para você, porque com omvn clean install
cache de armazenamento de comando de código anterior para dependência.fonte