Tengo un JAR en mi proyecto de Android y quiero que se agregue al APK final. De acuerdo, aquí voy:
<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>
Pero cuando estoy corriendo mvn package, recibo una advertencia:
[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
Y en el APK final no hay JAR.
¿Cómo arreglo eso?

Respuestas:
Deberá agregar el jar a su repositorio local de maven. Alternativamente (mejor opción) especifique el repositorio adecuado (si existe) para que pueda ser descargado automáticamente por maven
En cualquier caso, elimine la
<systemPath>etiqueta de la dependenciafuente
maven installen todas las computadoras en las que quiero construir ese proyecto (desafortunadamente no encontré este JAR en repositorios). ¡Gracias! :)No sé la verdadera razón, pero Maven empuja a los desarrolladores a instalar todas las bibliotecas (también personalizadas) en algunos repositorios de Maven, por
scope:systemlo que no es del agrado.maven-install-pluginseguir el uso:
escribe tu dependencia de esta manera
<dependency> <groupId>com.mylib</groupId> <artifactId>mylib-core</artifactId> <version>0.0.1</version> </dependency>luego, agregue maven-install-plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> <executions> <execution> <id>install-external</id> <phase>clean</phase> <configuration> <file>${basedir}/lib/mylib-core-0.0.1.jar</file> <repositoryLayout>default</repositoryLayout> <groupId>com.mylib</groupId> <artifactId>mylib-core</artifactId> <version>0.0.1</version> <packaging>jar</packaging> <generatePom>true</generatePom> </configuration> <goals> <goal>install-file</goal> </goals> </execution> </executions> </plugin>preste atención
phase:clean, para instalar su biblioteca personalizada en su repositorio, debe ejecutarmvn cleany luegomvn installfuente
<phase>process-resources</phase>lugar de<phase>clean</phase>. La fase de recursos del proceso parece más apropiada para tal escenario y siempre se llama antes de la fase de compilación.cleanfase es muy engañosa, no forma parte del ciclo de vida predeterminado y distorsiona el significado declean. Además, el cambio sugerido para usar una fase en el ciclo de vida predeterminado (por ejemplo,validateoprocess-resources) fallará en una situación de varios módulos, ya que el agregador intenta la resolución de dependencias, antes de que se ejecuten los objetivos personalizados para los módulos secundarios.<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin>Prueba esto.
fuente
El alcance del sistema solo se diseñó para tratar con archivos del 'sistema'; archivos que se encuentran en una ubicación fija. Archivos en
/usr/lib, o${java.home}(ptools.jar. Ej .). No fue diseñado para admitir.jararchivos varios en su proyecto.Los autores se negaron intencionalmente a que las expansiones de nombres de ruta funcionen correctamente para desanimarlo. Como resultado, a corto plazo puede usar
install:install-filepara instalar en el repositorio local, y luego algún día usar un administrador de repositorios para compartir.fuente
Utilice un administrador de repositorio e instale este tipo de archivos jar en él. Eso resuelve sus problemas en absoluto y para todas las computadoras en su red.
fuente
docker run -d -p 8081:8081 --name nexus sonatype/nexus3: consulte hub.docker.com/r/sonatype/nexus3 para obtener detalles.Prueba esta configuración. Funcionó para mí:
<plugin> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <warSourceDirectory>mywebRoot</warSourceDirectory> <warSourceExcludes>source\**,build\**,dist\**,WEB-INF\lib\*, WEB-INF\classes\**,build.* </warSourceExcludes> <webXml>myproject/source/deploiement/web.xml</webXml> <webResources> <resource> <directory>mywebRoot/WEB-INF/lib</directory> <targetPath>WEB-INF/lib</targetPath> <includes> <include>mySystemJar1.jar.jar</include> <include>mySystemJar2.jar</include> </includes> </resource> </webResources> </configuration> </plugin>fuente
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 el jar en el repositorio local.
fuente
Gracias a Ging3r obtuve la solución:
sigue estos pasos:
no lo use en la etiqueta de dependencia. Use lo siguiente en la etiqueta de dependencias en el archivo pom.xml:
<dependency> <groupId>com.netsuite.suitetalk.proxy.v2019_1</groupId> <artifactId>suitetalk-axis-proxy-v2019_1</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>com.netsuite.suitetalk.client.v2019_1</groupId> <artifactId>suitetalk-client-v2019_1</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>com.netsuite.suitetalk.client.common</groupId> <artifactId>suitetalk-client-common</artifactId> <version>1.0.0</version> </dependency>use el siguiente código en la etiqueta de complementos en el archivo pom.xml:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> <executions> <execution> <id>suitetalk-proxy</id> <phase>clean</phase> <configuration> <file>${basedir}/lib/suitetalk-axis-proxy-v2019_1-1.0.0.jar</file> <repositoryLayout>default</repositoryLayout> <groupId>com.netsuite.suitetalk.proxy.v2019_1</groupId> <artifactId>suitetalk-axis-proxy-v2019_1</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <generatePom>true</generatePom> </configuration> <goals> <goal>install-file</goal> </goals> </execution> <execution> <id>suitetalk-client</id> <phase>clean</phase> <configuration> <file>${basedir}/lib/suitetalk-client-v2019_1-2.0.0.jar</file> <repositoryLayout>default</repositoryLayout> <groupId>com.netsuite.suitetalk.client.v2019_1</groupId> <artifactId>suitetalk-client-v2019_1</artifactId> <version>2.0.0</version> <packaging>jar</packaging> <generatePom>true</generatePom> </configuration> <goals> <goal>install-file</goal> </goals> </execution> <execution> <id>suitetalk-client-common</id> <phase>clean</phase> <configuration> <file>${basedir}/lib/suitetalk-client-common-1.0.0.jar</file> <repositoryLayout>default</repositoryLayout> <groupId>com.netsuite.suitetalk.client.common</groupId> <artifactId>suitetalk-client-common</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <generatePom>true</generatePom> </configuration> <goals> <goal>install-file</goal> </goals> </execution> </executions> </plugin>Estoy incluyendo 3 frascos de la carpeta lib:
Finalmente, use
mvn cleany luegomvn installo 'mvn clean install' y simplemente ejecute el archivo jar desde la carpeta de destino o la ruta donde se instala (vermvn installregistro):java -jar abc.jarnota: Recuerde una cosa si está trabajando en jenkins, primero use
mvn cleany luego elmvn clean installcomando funcione para usted porque con el código anterior, elmvn clean installcomando almacena el caché para la dependencia.fuente