0x0000 前言

由于之前接触Java是一直玩的Android,或者上Java课时很简单的在Eclipse中写点小程序,现在接触了Java写后端程序,跟之前的做法有些大不一样了。项目编写完了,在IDEA中运行的倒好,导出却踩了不少坑。这里介绍三种Java工程的导出方法,记录一下。一般情况下,我们会使用Maven或者Gradle来创建并管理Java工程,当然也有原生的Java工程。

0x0001 普通Java项目

此种Java项目就是最基础的,没有用到任何项目管理工具或者仓库的。此种工程项目文件结构比较简单,但是导出需要自行配置。

进入File->Project Structure 添加一个Artifacts。 Artifacts代表一个打包项目。


as跑java程序 java怎么跑项目_Gradle

然后需要添加你所依赖的Jar文件,设置主类。


as跑java程序 java怎么跑项目_as跑java程序_02

接下来,如果一切正常,你就可以通过Build->Build Artifacts找到你刚刚创建的Artifacts。


as跑java程序 java怎么跑项目_idea 跑java项目_03

可以看到,现在可以选择Build或者Rebuild进行构建,也可以Clean清除构建的jar包。


as跑java程序 java怎么跑项目_jar_04

构建完成后,jar包会在项目的out/artifacts目录下。上传到服务器,使用 java -jar xxxx.jar命令运行即可。

0x0002 Maven项目

使用Maven构建的项目比较常见,如果你使用Spring或SpringBoot那么肯定会用到Maven。使用Maven构建的一大好处就是依赖配置非常方便,不用手动下载jar包,直接在pom.xml中进行配置就行。

而使用Maven的工程构建导出jar包也比较容易。我们直接在IDEA中找到Maven窗口(一般在右边,如果你没有乱动过的话),选择package进行构建。


as跑java程序 java怎么跑项目_idea 跑java项目_05

使用Maven构建的jar会生成在项目的target目录下。在服务器上运行方式同普通的java项目,使用jar命令即可。

0x0003 Gradle项目

如果你也开发Android,那么会比较熟悉Gradle,我们在Android中用到过。只不过Gradle导出Java项目和Android还是有很大区别。

这里介绍一种常用方法,通过Gradle插件Application进行构建。如果想要其他方法的小伙伴也可以在网络上搜索资料。

我们需要在Gradle项目的配置文件,即build.gradle中添加如下配置来启用Application插件并设置程序入口主类。

设置完成后,我们便可以在IDEA的Gradle窗口中找到application->run和distribution->assembieDist/distTar/distZip/installDist了


as跑java程序 java怎么跑项目_idea 跑java项目_06

这里介绍一下各个Task的不同之处:

- run: 在IDEA中运行项目

- distTar: 构建项目,生成一个Tar包 在项目的build/distributions目录下

- distTar: 构建项目,生成一个Zip包 在项目的build/distributions目录下

- assembieDist:构建项目,相当于同时执行了distTar和distZip

- installDist: 构建项目,生成一个目录 在项目的build/install目录下

我们可以看到,通过这种方式生成的工程是一个目录,包含了执行脚本和所有jar文件。项目的jar文件和引用到的jar包是分开的,因此需要执行脚本来启动。

- bin目录 包含两个执行脚本,.bat脚本在Dos环境(windows)使用,无后缀的其实是.sh脚本,在Unix环境运行

- lib目录 项目导出的jar和依赖的jar文件,注意他们是分开的

因此想要在Linux服务器上运行,我们可以使用distTar导出一个Tar压缩包,在服务器上使用tar -xvf xxxx.tar进行解压,然后进入bin目录,执行./xxxx脚本即可。

0x0004 GBK编码的坑

如果使用IDEA进行开发,Gradle进行编译构建,有可能会报出这样的错误错误: 编码GBK的不可映射字符

这是因为Gradle默认使用了GBK编码进行编译。而IDEA中是UTF-8编码,如果不是UTF-8编码可能也会出现乱码,所以强烈建议编程环境就使用UTF-8。

IDEA设置编码在File->Settings->Editor->File Encodings中


as跑java程序 java怎么跑项目_Java_07

然后我们需要在build.gradle中添加如下配置,设置编码为UTF-8

现在再进行构建就不会报错了。

Comments