maven:用appassembler-maven-plugin打包含有自定义目录的JAVA程序
2016-12-13 13:49
507 查看
问题说明:
用maven构建了一个项目,目录结构如下:
appassemblerd的配置:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>2.0.0</version> <configuration> <!-- 生成linux, windows两种平台的执行脚本 --> <platforms> <platform>windows</platform> <platform>unix</platform> </platforms> <!-- 根目录 --> <assembleDirectory>${project.build.directory}/logtask</assembleDirectory> <!-- 打包的jar,以及maven依赖的jar放到这个目录里面 --> <repositoryName>lib</repositoryName> <!-- 可执行脚本的目录 --> <binFolder>bin</binFolder> <!-- 配置文件的目标目录 --> <configurationDirectory>conf</configurationDirectory> <!-- 拷贝配置文件到上面的目录中 --> <copyConfigurationDirectory>true</copyConfigurationDirectory> <!-- 从哪里拷贝配置文件 (默认src/main/config) --> <configurationSourceDirectory>src/main/resources</configurationSourceDirectory> <!-- lib目录中jar的存放规则,默认是${groupId}/${artifactId}的目录格式,flat表示直接把jar放到lib目录 --> <repositoryLayout>flat</repositoryLayout> <encoding>UTF-8</encoding> <logsDirectory>logs</logsDirectory> <tempDirectory>tmp</tempDirectory> <programs> <program> <!-- 启动类 --> <mainClass>net.test.App</mainClass> <jvmSettings> <extraArguments> <extraArgument>-server</extraArgument> <extraArgument>-Xmx2G</extraArgument> <extraArgument>-Xms2G</extraArgument> </extraArguments> </jvmSettings> </program> </programs> </configuration> </plugin>
在这种配置下打包时遇到了问题,第一把配置文件和自己的class达成了一个jar,导致无法修改jdbc.properties等配置,第二把所有配置文件部分目录的放到了conf下面。
由此导致了启动时只能读取jar里面的配置文件,无法根据现场环境修改。
解决办法:
1.替换上面置为:
<plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-resources</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/${project.name/classes</outputDirectory> <resources> <resource> <directory>${project.build.directory}/classes</directory> <filtering>false</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>2.0.0</version> <configuration> <!-- 生成linux, windows两种平台的执行脚本 --> <platforms> <platform>windows</platform> <platform>unix</platform> </platforms> <!-- 根目录 --> <assembleDirectory>${project.build.directory}/${project.name}</assembleDirectory> <!-- 打包的jar,以及maven依赖的jar放到这个目录里面 --> <repositoryName>lib</repositoryName> <!-- 可执行脚本的目录 --> <binFolder>bin</binFolder> <!-- lib目录中jar的存放规则,默认是${groupId}/${artifactId}的目录格式,flat表示直接把jar放到lib目录 --> <repositoryLayout>flat</repositoryLayout> <encoding>UTF-8</encoding> <logsDirectory>logs</logsDirectory> <tempDirectory>tmp</tempDirectory> <programs> <program> <!-- 启动类 --> <mainClass>net.bwda.App</mainClass> <jvmSettings> <extraArguments> <extraArgument>-server</extraArgument> <extraArgument>-Xmx2G</extraArgument> <extraArgument>-Xms2G</extraArgument> </extraArguments> </jvmSettings> </program> </programs> </configuration> </plugin>
2.修改appassembler-maven-plugin-2.0.0.jar
修改红框内两个文件:添加classes这个路径到CLASSPATH。
windows:
unix:
如果没有本地仓库nexus,这样就可以了。
如果有则上传到本地仓库nexus的3rd party,记得必须选择pom文件上传方法,这个pom文件就是最初下载时产生的。
2.重新执行打包命令
mvn clean package appassembler:assemble,生成的目录结构如下:
2.删除生成的jar包(自己的源码生成的jar)
3.lasses复制到输出目录/target/logtask这个目录下。
3.修改bin下面的app.bat
dp0:表示这个app.bat所在路径,我的是:D:\logtask\bin。..表示返回到上级,这样就定为到了D:\logtask。
添加 "%BASEDIR%"\classes; 到CLASSPATH中。这点非常重要!
下一步就是点击app.bat启动了。
完毕!
相关文章推荐
- maven-war-plugin 插件打包时,src/main/java 目录下mybatis的映射文件如何配置
- 使用 maven 插件 maven-shade-plugin 对可执行 java 工程及其全部依赖 jar 进行打包
- 关于Cannot construct org.apache.maven.plugin.war.util.WebappStructure maven打包问题解决
- maven自定义插件 jenkis打包 jar包版本校验dependency-check-plugin:check
- onejar-maven-plugin把java类与lib打包为一个可运行jar
- 将Eclipse中编写含有JDBC驱动程序jar包的Java程序打包
- linux tomcat部署含有matlab画图打包的java web程序
- Maven打包java代码目录下的属性文件
- maven-shade-plugin 使用maven插件对java工程进行打包
- maven打包时报错: Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a
- maven打包报错:Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no
- onejar-maven-plugin把java类与lib打包为一个可运行jar
- maven-assembly-plugin把java工程打包成为一个可执行的jar包
- maven打包插件:appassembler
- maven 自动生成运行脚本插件appassembler-maven-plugin
- onejar-maven-plugin把java类与lib打包为一个可运行jar
- Eclipse maven webapp项目目录结构配置 java build path 出现问题
- 使用appassembler-maven-plugin插件生成启动脚本
- 使用Maven对JAVA程序打包-带主类、带依赖
- Java之——使用 maven 插件 maven-shade-plugin 对可执行 java 工程及其全部依赖 jar 进行打包