IDEA中 JAVA编译JAR包的几种方式
关于在IDEA中编译Java jar包的几种方式,简单记录,以备查阅。
1. 使用IDEA中的工具
以此选择以下:
File>Project Struct>Artifacts>+>JAR>From modules with dependencies
根据你的项目添加Main Class, MANIFEST.MF文件路径改成Resource目录。
根据界面提示可以修改生成JAR的路径和名字,从Available Elements中可选择需要打包进JAR的依赖包。
最后确认添加即可。
编译: Build>Buil Artifacts>Build
2. pom.xml配置,maven编译打包
需要在项目的pom.xml配置中加上以下配置项:
<build>
<finalName>spark-daily</finalName>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- <descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs> -->
<descriptors>
<descriptor>package.xml</descriptor>
</descriptors>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<mainClass>com.iauto.spark.SparkDaily</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
其中:
finalName:标识最终编译出来的jar名称
mainClass:指定JAR包运行的main class
resource:指定需要打包进JAR包中的资源文件
关于依赖包的打包进JAR中:
jar-with-dependencies : 表示所有依赖包都打包进JAR
如果需要定制哪些包需要打包进JAR,使用:
<descriptors>
<descriptor>package.xml</descriptor>
</descriptors>
通过增加配置文件package.xml来定制自己的依赖,示例如下:
<?xml version='1.0' encoding='UTF-8'?>
<assembly>
<id>package</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.directory}/classes</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<unpack>true</unpack>
<includes>
<include>com.alibaba:fastjson</include>
</includes>
</dependencySet>
</dependencySets>
</assembly>
其中:
${project.build.directory}/classes:表示项目本身编译出来的classes文件
对依赖包的选择通过dependencySet来设定:
<dependencySet>
<outputDirectory>/</outputDirectory> ---设定在JAR中的路径,/表示根目录
<unpack>true</unpack> ---对依赖包解压
<includes>
<include>com.alibaba:fastjson</include> ---指定需要打包的依赖项,格式为groupId:artifactId
</includes>
</dependencySet>
同理可以通过excludes/exclude* 来指定排除那些依赖包,具体的语法规则可以参考:
http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
最终编译打包,需要进入到项目的根目录,执行命令:mvn clean package即可。
3. 通过Spring 框架来打包
pom.xml中添加相关的配置:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
编译:mvn clean package