Tengo un proyecto que contiene un solo módulo y algunas dependencias. Me gustaría crear un jar, en un directorio separado, que contenga el módulo compilado. Además, me gustaría tener las dependencias presentes al lado de mi módulo.
No importa cómo gire el proceso "build jar" de IntelliJ, la salida de mi módulo aparece vacía (además de un archivo META-INF).
fuente
Esto sigue siendo un problema en 2017, ¡espero que ayude a alguien por ahí! Encontré 2 posibilidades para crear jar-s de trabajo en IntelliJ 2017.2
1. Crear artefactos desde IntelliJ:
Tienes que cambiar el directorio de manifiesto:
reemplazar "java" con "recursos"
Así es como debería verse:
Luego eliges las dependencias que quieres que se empaqueten en tu jar, o CERCA de tu archivo jar
Para construir su artefacto, vaya a construir artefactos y elija "reconstruir". Creará una carpeta "fuera" con su archivo jar y sus dependencias.
2. Usando maven-assembly-plugin
Agregar sección de compilación al archivo pom
Este procedimiento creará el archivo jar en la carpeta "target"
fuente
no main manifest attribute
adoptando las soluciones anteriores. Nadie ha mencionado cambiar elpath to manifest
. Thnx !!Recientemente tuve este problema y creo que estos pasos son fáciles de seguir si faltan detalles en alguna solución o enlace anterior.
Cómo crear un
.jar
uso de IntelliJ IDEA 14.1.5:fuente
Para aquellos que se benefician de las imágenes como lo hago yo:
File -> Project Structure
fuente
Aquí hay 2 ejemplos con el proyecto Maven, paso a paso:
Método 1: Construye jar con maven y pom.xml
en pom.xml, agregue maven-jar-plugin.
captura de pantalla: 4. abra el cuadro del proyecto maven haciendo clic en el icono de búsqueda y escriba maven,
haga clic en limpiar, luego haga clic en instalar
su archivo jar aparecerá dentro de la carpeta de destino
prueba tu jar usando java -jar
Método 2: construir jar con maven sin cambio pom.xml
¡Muy importante!
El MANIFEST.MF debe estar en su carpeta de recursos y el Main.Class debe referirse a {paquete} - {nombre-clase-que-contiene-clase-principal}
fuente
Probablemente sea un poco tarde, pero logré resolverlo de esta manera -> abrir con winrar y eliminar ECLIPSEF.RSA y ECLIPSEF.SF en la carpeta META-INF, además puse "Main-class: main_class_name" (sin ".class" ) en MANIFEST.MF. Asegúrese de presionar "Enter" dos veces después de la última línea, de lo contrario no funcionará.
fuente
Cuando uso esta solución, aparece este error:
y la solución es :
Tienes que cambiar el directorio de manifiesto:
cambiar java a recursos
fuente
Estaba tratando de construir un jar desde una aplicación Kotlin de varios módulos y recibía el notorio error 'sin atributo de manifiesto principal'. Crear el directorio de manifiesto
src/main/resources
tampoco funcionó.En cambio, funciona al crear en
src
directo:src/META-INF/MANIFEST.MF
.fuente
Como dice la gente de arriba, pero tengo que señalar un punto. Tienes que marcar la casilla de verificación:
fuente
Idea 8.1.3
Jar está bien, ya que hay una salida compilada en el directorio 'output' (project / out / production //)
Supongo que tienes que ejecutar 'make' antes de construir jar
para las dependencias simplemente marque "mostrar biblioteca" y elija lo que desee.
fuente
Con Maven puedes usar este complemento:
fuente
Es posible que desee echar un vistazo a Maven ( http://maven.apache.org ). Puede usarlo como el proceso de compilación principal para su aplicación, o simplemente para realizar ciertas tareas a través del cuadro de diálogo Editar configuraciones. El proceso de crear un JAR de un módulo dentro de Maven es bastante trivial, si desea que incluya todas las dependencias en un JAR autoejecutable que también es trivial.
Si nunca has usado Maven antes, entonces quieres leer Mejores construcciones con Maven .
fuente
Si está utilizando bibliotecas de terceros con su proyecto o si tiene problemas para crear el archivo MANIFEST.MF correctamente, puede haber conflictos al ejecutar archivos JAR generados utilizando
método mencionado anteriormente.
En cambio, le sugiero que cree un JAR vacío y agregue todos los demás elementos a la raíz de salida manualmente. Puede encontrar un maravilloso artículo de blog para este método aquí: http://karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/ Intenté los pasos mencionados allí y todo funcionó bien ¡para mi!
fuente
Algunas de las otras respuestas son inútiles porque tan pronto como vuelva a importar el proyecto IntelliJ IDEA del proyecto maven, todos los cambios se perderán.
La construcción del jar debe ser desencadenada por una configuración de ejecución / depuración, no por la configuración del proyecto.
Jetbrains tiene una buena descripción de cómo puedes lograr esto aquí:
https://www.jetbrains.com/help/idea/maven.html
Desplácese hacia abajo a la sección llamada "Configuración de disparadores para objetivos Maven".
(La única desventaja de su descripción es que sus capturas de pantalla están en el esquema de color negro sobre blanco predeterminado en lugar del tema súper impresionante Darcula. ¡Uf!)
Entonces, básicamente, lo que haces es que abres el panel "Proyectos Maven", encuentras el proyecto de interés, (en tu caso, el proyecto que construye tu jar), debajo de él encuentras el objetivo Maven que deseas ejecutar , (por lo general, el objetivo del "paquete" crea frascos), abre el menú contextual (haga clic con el botón derecho en una máquina con Windows) y aparecerá la opción "Ejecutar antes de ejecutar / depurar ..." selecciona y te llevará de la mano desde allí. Realmente fácil.
fuente
En caso de que intente crear un jar con kotlin, debe crear una
src/main/java
carpeta y usar esta carpeta como ubicación para la carpeta META-INF.fuente
Aquí está la respuesta oficial de la Ayuda IntelliJ IDEA 2018.3 . Lo intenté y funcionó.
fuente
Mi problema fue este: utilicé Intellij IDEA (probé diferentes versiones) + Gradle. Cuando compilé el proyecto y construí el jar artifacf, como se indica en las respuestas anteriores, recibí un error: "no hay atributo principal manifiesto ..."
Esta solución funcionó para mí (un agradecimiento especial a Thilina Ashen Gamage (ver arriba) para obtener una sugerencia):
Extracto: si usa bibliotecas externas y crea un proyecto a través de Configuración del proyecto - Artefactos - Agregar (+) - Jar - De los módulos con dependencias , entonces probablemente debido a un error del programa, la carpeta META-INF con el archivo MANIFEST_MF no incluye jar. Para evitarlo, cree un archivo jar VACÍO .
Configuración del proyecto - Artefactos - Añadir (+) - tarro - frasco vacío . La carpeta META-INF se agregará a la carpeta de recursos . Luego selecciona tu clase principal. Verá la siguiente estructura jar: Observe la presencia de una carpeta META-INF. Luego puede construir su proyecto y construir artefactos. Esta solución también funcionó para aplicaciones javaFX.
fuente
Si está trabajando en el proyecto spring / mvn, puede usar este comando:
El archivo jar se guardará en el directorio de destino.
fuente
Ant y Maven son ampliamente utilizados. Prefiero Ant, siento que es más liviano y que el desarrollador tiene más control. Algunos sugerirían que es su desventaja :-)
fuente