Soy algo nuevo en Java, y muy nuevo en maven. Podría usar algo de terminología de manera imperfecta.Compilación de un proyecto de maven con clase desde un archivo jar externo (que no está en un artefacto de maven)
Como desarrollo mi proyecto que estoy usando use maven para compilar, ya que he necesitado clases que no son parte del core java language he agregado una sección <dependency>
apropiada a mi pom.xml
(generalmente copiada de mvnbrowser.com sin que realmente lo entiendo muy bien), y he podido usar las clases que quiero. Funciona genial.
Ahora he encontrado una clase de Java que quiero usar que aparentemente no está disponible en un artefacto de experto. Es com.android.sdklib.build.ApkBuilder
que se distribuye con el SDK de Android. Escribí un programa java independiente para que mi código funcionara; Lo compilo con javac
y no con maven, y eso funciona bien. Para eso, puse el archivo jar que contiene la clase que quiero, sdklib.jar
, en mi directorio jre/lib/ext
(/usr/local/jdk1.6.0/jre/lib/ext
en una máquina FreeBSD), y mi línea import com.android.sdklib.build.ApkBuilder
compila bien y puedo consultar ApkBuilder
y usarla sin problemas.
Ahora, cuando he copiado mi código de trabajo en mi proyecto Maven, y trató de construir con mvn project
, me sale package com.android.sdklib.build does not exist
errores en la línea de importación y cannot find symbol: class ApkBuilder
errores cuando me refiero a ApkBuilder
.
Buscando en la red, encontré android-maven-plugin
aquí: http://code.google.com/p/maven-android-plugin/. Me refirió a maven-android-sdk-deployer
aquí: https://github.com/mosabua/maven-android-sdk-deployer. Estas pistas sonaron prometedoras al principio, pero hasta donde puedo decir, su propósito es desarrollar aplicaciones de Android utilizando Maven, que no es lo que estoy tratando de hacer. Solo quiero que mi programa java manipule archivos Android apk
, pero mi programa java no debe ejecutarse en un dispositivo Android. Además, el SDK de Android está diseñado para trabajar con Linux, no con FreeBSD que estoy usando, por lo que no puedo seguir las instrucciones de instalación para maven-android-sdk-deployer
. También encontré un artefacto llamado maven-apkbuilder-plugin
, pero también parece ser para crear aplicaciones de Android y no vi documentación para él. Así que no he seguido estos pasos.
Parece que lo más fácil sería obtener el compilador en mi carpeta jre/lib/ext
para el archivo sdklib.jar
al ejecutar mvn package
. Pero tal vez ese no es el camino a seguir. O tal vez hay un cambio simple que puedo hacer en mi pom.xml
que hará que el compilador encuentre sdklib.jar
. Miré la documentación de pom al http://maven.apache.org/pom.html#Build_Settings, pero no vi una manera de hacerlo. De todos modos, estoy seguro de que hay al menos una solución; Simplemente no lo sé (todavía).
¿Cuáles son mis opciones? ¿Cuál es la mejor manera de usar la clase ApkBuilder
en mi proyecto maven-built? ¿Qué debería haber leído que me hubiera permitido responder a esta pregunta yo mismo? ¡¡Gracias!!
Usted ha identificado correctamente el origen del problema - el JAR faltante en el classpath. Forzar la alimentación del 'jre/lib/ext' no es ideal. Intenta investigar algunas herramientas de desarrollo de Maven + Android (no sé nada sobre el desarrollo de Android). M2e-Android (http://rgladwell.github.com/m2e-android/) parece intrigante. Afirma que "trae el poder de la administración de la dependencia de Maven al ADT" –