最近做一个数据转换的小程序 脚本运行的 JAVA SE
当使用之前打jar的配置时,启动报错.baidu一番是由于jar里的清单文件被覆盖导致,资源文件丢失导致
这是以前的配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.hfvast.smg.Application</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
想想也是 多个依赖jar的源码合并 以前项目就几个依赖jar碰巧没合并丢了
新的打jar包
上配置
<build>
<finalName>dataSync</finalName>
<resources>
<!-- 控制资源文件的拷贝 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<!--<filtering>false</filtering>-->
<!-- 配置文件外置(在打包时取消注释)
资源文件拷贝到编译输出路径target的子文件夹config目录下,最终结构如下:
target
...config
...spring
...mapper
...env
...lib
...generateImportCarSql.jar
-->
<!--<targetPath>${project.build.directory}/config</targetPath>-->
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<!-- 清单文件 -->
<manifest>
<mainClass>com.hfvast.dataSync.AppConfig</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<!-- 给清单文件添加键值对(配置文件外置) -->
<manifestEntries>
<Class-Path>config/</Class-Path>
</manifestEntries>
</archive>
<classesDirectory>
</classesDirectory>
</configuration>
</plugin>
<!-- 拷贝依赖的jar包到lib目录 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 解决资源文件的编码问题 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
我们知道打war包时,依赖都会放在WEB-INF/lib 目录下 类加载器会加载这个目录下的依赖.
这个配置就是将依赖专门放到lib目录下 将配置放到config下 打源码包时指定配置
注意: 配置文件的路径必须是以classpath:
开头
当开发时,就是上面的配置.当打包时,将<!--<targetPath>${project.build.directory}/config</targetPath>-->
这行注释放开.
执行mvn package
就会把资源文件编译到指定位置
之后将target目录下的 lib
conf
dataSync.jar
三个文件夹或文件 sftp 到 服务器
执行java -jar dataSync.jar
就可以启动程序了.
如果你能看懂以上配置,那么你肯定知道 jdk环境变量为什么这么配置了
export JAVA_HOME=/root/jdk1.8.0_121
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
上篇Proxy