Cómo construir frascos de IntelliJ correctamente?


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 tuerza el proceso "build jar" de IntelliJ, la salida de mi módulo aparece vacía (además de un archivo META-INF).

Author: ripper234, 2009-07-04

12 answers

He Aquí cómo construir un frasco con IntelliJ 10 http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/

File -> Project Structure -> Project Settings -> Artifacts -> Click green plus sign -> Jar -> From modules with dependencies...

Lo anterior establece el "esqueleto" donde se guardará el frasco. Para construirlo y guardarlo, haga lo siguiente:

Extraer al tarro de destino

OK

Construir / Construir Artefacto

 409
Author: EpicPandaForce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-14 23:51:38

Recientemente tuve este problema y creo que estos pasos son fáciles de seguir si falta alguna solución o enlace anterior.

Cómo crear un .jar usando IntelliJ IDEA 14.1.5:

  1. Archivo > Guardar todo.
  2. Ejecute el controlador o la clase con el método principal.
  3. Archivo > Estructura del proyecto.
  4. Seleccione la pestaña "Artefactos".
  5. Haga clic en el botón verde más cerca de la parte superior de la ventana.
  6. Seleccione JAR en el menú desplegable Agregar. Seleccione"De módulos con dependencias"
  7. Seleccionar clase principal.
  8. El botón de opción debe seleccionar "extraer al TARRO de destino."Pulse OK.
  9. Marque la casilla "Construir en hacer"
  10. Pulse aplicar y Aceptar.
  11. En el menú principal, selecciona el menú desplegable build.
  12. Seleccione la opción construir artefactos.
 117
Author: user5442490,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-19 17:09:45

Esto sigue siendo un problema en 2017, espero que ayude a alguien por ahí! He encontrado 2 posibilidades para crear jar-s de trabajo bajo IntelliJ 2017.2

1. Crear artefacto desde IntelliJ:

  • Ir a la estructura del proyecto:

Menú Archivo

  • Crear un nuevo artefacto:

Crear un nuevo artefacto

  • Seleccione la clase principal y asegúrese de cambiar el manifiesto carpeta:

introduzca la descripción de la imagen aquí

Tienes que cambiar el directorio del manifiesto:

<project folder>\src\main\java 

Sustitúyase "java" por "recursos"

<project folder>\src\main\resources

Así es como debería verse:

forma correcta para el nuevo manifiesto

  • A continuación, elija las dependencias que desea empaquetar EN su jar, o CERCA de su archivo jar

  • Para construir tu artefacto ve a construir artefactos y elige "reconstruir". Creará una carpeta " out " con su archivo jar y su dependencia.

introduzca la descripción de la imagen aquí

2. Usando maven-assembly-plugin

Agregar la sección de compilación al archivo pom

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <finalName>ServiceCreate</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <archive>
                        <manifest>
                            <mainClass>com.svt.optimoo.App</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • Crear una nueva configuración de ejecución/depuración:

Crear una nueva configuración de ejecución/depuración:

  • Elija la aplicación:

Elegir aplicación

  • , Rellene el formulario
  • Agregue el objetivo maven" assembly:single " después de la compilación a ejecutar last

introduzca la descripción de la imagen aquí

Configuración Final

  • Guárdelo, luego ejecute

introduzca la descripción de la imagen aquí

Este procedimiento creará el archivo jar bajo la carpeta "destino"

Ubicación del archivo JAR

 95
Author: Zsolt Tolvaly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-15 08:45:23

Para aquellos que se benefician de las imágenes como yo:

Archivo - > Estructura del proyecto

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

 27
Author: Crt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-08 17:40:33

Probablemente sea un poco tarde, pero me las arreglé para resolverlo de esta manera - > abre con winrar y elimina ECLIPSEF.RSA y ECLIPSEF.SF en la carpeta META-INF, además ponga " 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á.

 5
Author: Baka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-06 09:58:21

Idea 8.1.3

Jar está bien, ya que hay 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.

 1
Author: Vugluskr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-04 21:15:17

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 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 Compilaciones con Maven.

 1
Author: Gary Rowe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-30 09:16:54

Con Maven puedes usar este plugin:

 <build>
    <plugins>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>[path you class main]</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase> 
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
 1
Author: fede beron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-07 09:29:57

Si está utilizando bibliotecas de terceros con su proyecto o si tiene problemas con la creación de MANIFIESTO.Archivo MF correctamente, puede haber conflictos al ejecutar archivos JAR generados mediante

File > Project Structure > Artifacts > '+' > JAR > From modules with dependencies > .....

Método mencionado anteriormente.

En su lugar, le sugiero que cree un JAR vacío y agregue todos los demás elementos a la raíz de salida manualmente. Un maravilloso artículo de blog para este método se puede encontrar aquí: http://karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea / Probé los pasos mencionados allí y todo funcionó bien para mí!

 0
Author: Thilina Ashen Gamage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-08 19:10:00

Algunas de las otras respuestas son inútiles porque tan pronto como vuelva a importar el proyecto IntelliJ IDEA desde el proyecto maven, todos los cambios se perderán.

La construcción del jar necesita ser activada 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 puede lograr esto aquí:

Https://www.jetbrains.com/help/idea/maven.html

Desplácese hacia abajo hasta la sección llamada "Configuración de disparadores para Maven objetivo".

(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 súper impresionante tema darcula. Ugh!)

Así que, básicamente, lo que haces es abrir 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 quieres ejecutar, (generalmente el objetivo" paquete " crea jars,) abres el menú contextual en él, (haga clic con el botón derecho en una máquina Windows,) y habrá un " Ejecutar antes de Ejecutar / Depurar..."opción que puedes seleccionar y te llevará de la mano desde allí. Muy fácil.

 0
Author: Mike Nakis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-25 17:53:19

En caso de que esté tratando de construir un jar con kotlin, debe crear una carpeta src/main/java y usar esta carpeta como ubicación para la carpeta META-INF.

 0
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-07 13:57:41

Ant y Maven son ampliamente utilizados. Prefiero Ant, siento que es más ligero y que el desarrollador tiene más control. Algunos sugerirían que esa es su desventaja: -)

 -3
Author: Brian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-03 07:41:38