IDE环境中,可以直接用exec-maven-plugin插件来运行java application,类似下面这样:
1 <plugin> 2 <groupId>org.codehaus.mojo</groupId> 3 <artifactId>exec-maven-plugin</artifactId> 4 <version>1.2.1</version> 5 <executions> 6 <execution> 7 <goals> 8 <goal>exec</goal> 9 </goals> 10 </execution> 11 </executions> 12 <configuration> 13 <executable>java</executable> 14 <arguments> 15 <argument>-classpath</argument> 16 <classpath> 17 </classpath> 18 <argument>ctas.importer.reader.app.Program</argument> 19 </arguments> 20 </configuration> 21 </plugin>
18行,改成自己的Main-Class类,然后用mvn exec:exec来运行,但是部署到生产环境中时,服务器上通常并不具备maven环境,只能用 java -jar xxx.jar这种方式来运行,下面是一些处理细节:
一、依赖项的处理
java application运行时需要查找依赖的第三方jar,如果查找classpath失败,就会报错,可以先用
mvn dependency:copy-dependencies -DoutputDirectory=target/lib
命令,把依赖的jar包全部导出到target/lib这个目录下
二、利用maven-jar-plugin修改META-INF\MANIFEST.MF 清单文件
java application的最终jar里,用解压工具打开后,可以看到META-INF目录下,有一个重要的清单文件 MANIFEST.MF,这里面可以指定 Main-Class及classpath,结构如下:
1 Manifest-Version: 1.0 2 Built-By: jimmy 3 Build-Jdk: 1.7.0_09 4 Class-Path: lib/DataEntity-1.0.jar ... 5 Created-By: Apache Maven 3.2.3 6 Main-Class: ctas.importer.reader.app.Program 7 Archiver-Version: Plexus Archiver
其中第4行指定了classpath,也就是所依赖的jar包在什么地方,第6行表示main函数的入口类,默认情况下mvn clean package生成的jar包里,清单文件上并没有这2行,需要在pom.xml中添加插件
1 <plugin> 2 <groupId>org.apache.maven.plugins</groupId> 3 <artifactId>maven-jar-plugin</artifactId> 4 <configuration> 5 <archive> 6 <manifest> 7 <mainClass>ctas.importer.reader.app.Program</mainClass> 8 <addClasspath>true</addClasspath> 9 <classpathPrefix>lib/</classpathPrefix> 10 </manifest> 11 </archive> 12 <classesDirectory> 13 </classesDirectory> 14 </configuration> 15 </plugin>
第7行指定Main-Class,第9行指定classpath的相对路径,这样mvn package后,清单文件里就会自动添加Main-Class和Class-Path这二项
ok了,部署时把jar包和lib目录,都上传到服务器上 ,然后测试一下,顺利的话 java -jar xxx.jar就可以了,如果要在后台运行,前面加 nohup
相关推荐
至于压缩包子文件的文件名称列表"package-folder",这可能是指Maven打包后的结果,即生成了一个名为`package`的文件夹。这个文件夹通常包含了项目的所有依赖、资源文件以及打包后的主应用程序。在Maven的默认配置中...
最后,执行`mvn package`命令,Maven会根据`pom.xml`中的配置打包项目,并生成包含所有依赖的JAR文件。在上述例子中,这个JAR文件会包含Dubbo服务接口和其依赖的库,使得我们可以轻松地部署和运行服务。 在实际开发...
Spring Boot的可执行jar文件是一个自包含的应用,包含所有依赖库,可以直接运行。 1. **创建模块化项目结构** 在多项目打包中,我们需要将各个独立的Spring Boot项目作为模块进行组织。这些模块可以是Maven或...
Java打包和发布的基础是将Java代码打包成JAR(Java Archive)文件,这是一种方便管理和分发Java应用程序的方式。JAR文件本质上是多个.class文件的ZIP压缩格式,它允许开发者将相关的类、资源和元数据组织在一起,...
在Java开发过程中,将项目打包成可执行的JAR(Java Archive)文件是常见的操作,这使得代码可以方便地在不同环境中运行。本篇笔记主要介绍如何将Java项目导出为可执行JAR包,以便在没有开发环境的机器上也能运行程序...
Java项目打包工具是开发人员在完成Java应用程序或Web应用程序开发后,用来整合资源、编译代码、处理依赖、生成可部署文件的重要工具。这些工具帮助开发者将源代码、配置文件、库和其他资源组织成便于分发和运行的...
Java Web开发中,JAR(Java Archive)包是不可或缺的一部分,它主要用于集合多个类文件、资源文件以及元数据,便于代码的分发、部署和执行。JAR文件本质上是一个ZIP格式的压缩文件,包含了Java应用程序或库的所有...
总结来说,Maven的多环境配置打包能力使得Java项目能灵活适应不同环境,提高了代码的可维护性和部署效率。通过理解和熟练运用profiles和resource filtering,开发者可以更好地管理项目的配置,提升开发效率。
本资源"Springboot项目正确打jar包maven版pom.rar"是针对SpringBoot项目使用Maven打包成可执行JAR文件的配置示例。 在SpringBoot项目中,我们通常使用Maven作为构建工具,因为它提供了强大的依赖管理和构建生命周期...
Oracle19c驱动jar包是Oracle数据库连接Java应用程序的关键组件,尤其对于那些使用JDK8和JDK10的开发者而言。这个压缩包包含了两个重要的jar文件:ojdbc10.jar和ojdbc8.jar,它们分别对应不同的Java版本兼容性。 1. ...
标题中的“使用IntelliJ Idea 打包成可执行的JAR.pdf”指的是在IntelliJ IDEA这个集成开发环境中,如何将Java项目打包成一个可独立运行的JAR(Java Archive)文件。这个过程通常用于将Java应用程序整合到一个单一的...
Java程序打包工具是开发者在开发过程中必不可少的辅助工具,它们主要负责将源代码、资源文件、依赖库等组件整合成可执行的格式,以便于分发、部署和运行。在这个场景中,提到的"project-mjar-0.4"很可能是一个特定的...
在大型项目中,依赖管理工具如Maven或Gradle能自动处理这些依赖,确保所有必要的`jar`包都被正确地引入。 4. **运行`jar`包**:可以通过`java -jar`命令来运行一个包含主类的`jar`包,例如`java -jar myapp.jar`。...
这里我们主要讨论的是Java应用程序的打包过程,包括JAR(Java Archive)文件的创建、运行以及更高级的WAR(Web Application Archive)和EAR(Enterprise Archive)文件的打包。 1. JAR文件打包:JAR文件是Java平台...
- 打包JAR文件:使用`jar`命令行工具或IDE(如Eclipse、IntelliJ IDEA)可以将项目打包成JAR。 - 集成到项目:开发中,我们经常引用其他项目提供的JAR包,将其添加到项目的类路径中,以使用其中的类和功能。 3. *...
在Java开发过程中,打包是一项非常重要的任务,它将编译后的类文件和其他资源组织成一个可执行的JAR(Java Archive)文件或者WAR(Web Application Archive)文件,便于部署、分发和运行。本篇文章主要讲解Java打包...
- **JAR (Java Archive)**:适用于库文件或无依赖的可执行文件。 - **WAR (Web Application Archive)**:专为Web应用程序设计,包含所有Web资源(如HTML页面、JSP文件等)及类文件。 - **EAR (Enterprise ...
JAR文件的设计旨在提供一种跨平台的打包机制,使得Java应用可以方便地在不同的操作系统上运行而无需修改。 #### Manifest文件:JAR文件的灵魂 Manifest文件包含了JAR文件的关键元数据,如版本信息、创建者、主类名...
标题“JAVA项目打包方式”指的是在Java开发过程中,如何将完成的项目整理成可执行的、便于分发的形式。在Java领域,常见的打包方式有JAR(Java Archive)、WAR(Web Application Archive)以及EAR(Enterprise ...
Spring Boot简化了Java Web应用的开发过程,提供了快速构建可运行的应用程序的方式,而Maven则是一个流行的项目管理和依赖管理工具。在这里,我们可能假设开发者选择了Gradle或者其他构建工具替代Maven。 Spring ...