按开源项目风格构建部署自己的项目
来源:互联网 发布:用友软件怎么下载 编辑:程序博客网 时间:2024/06/03 17:54
本文简单介绍如何将自己的maven项目组织成开源项目结构,也就是可以发布之后让别人下载解压缩运行脚本启动。
背景知识
在部署开源项目时候,一般解压缩之后设置一些配置文件就可以通过脚本启动了。
Hadoop和Spark直接./start-all.sh就可以启动服务器了,再通过客户端连接进行操作。
Cassandra也是先启动服务器,再启动客户端连接。本文仿照这种服务器+客户端的脚本启动方式来将自己的项目打造出开源项目的感觉~
项目结构
开源项目解压缩之后重要的目录:bin(sbin),lib(jars),conf,logs,doc
- bin:运行脚本
- lib:项目jar包和依赖的jar包
- conf:配置文件
- logs:输出日志
- doc:文档
下面介绍一些主要的构建步骤:
打jar包
将项目打成多个jar包,可以使用maven-dependency-pulgin插件。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build>
outputDirectory为编译出的jar包路径,点进属性project.build.directory,进入maven系统文件pom-4.0.0.xml中,direcrory属性默认为 根目录/target。
pom-4.0.0.xml
<build>
<directory>${project.basedir}/target</directory>
现在可以将deamon项目打包了,进入项目中,通过 maven package
命令打包,这时本项jar包放在了/target下,依赖的jar包放在了/target/lib下。可以将这些jar包都挪到根目录的lib中。
配置文件
conf目录除了放项目配置文件外,还需要加一个脚本,主要用来让用户设置JAVA_HOME。
xxx_env.sh
#!/bin/shexport JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
启动脚本
xxx_env.sh写好了,谁去调用呢,那就是启动脚本干的事了。
一般开源项目会有自己的主目录,比如SPARK_HOME,HADOOP_HOME,用户可以添加进环境变量中。在启动脚本中可以设置根目录。并且通过根目录找到conf目录和lib目录,来加载配置文件和所有的jar包。最后运行deamon。
start-xxx.sh
#获取根目录if [ -z "${XXX_HOME}" ]; then export XXX_HOME="$(cd "`dirname "$0"`"/..; pwd)"fiXXX_CONF_DIR=${XXX_HOME}/conf#使用 .或source 在同一进程中执行xxx-env.sh,使得xxx-env.sh中的变量能被加载进来if [ -f "$XXX_CONF_DIR/xxx-env.sh" ]; then . "$XXX_CONF_DIR/xxx-env.sh"fi#获取JAVA_HOMEif [ -n "$JAVA_HOME" ]; then for java in "$JAVA_HOME"/bin/amd64/java "$JAVA_HOME"/bin/java; do if [ -x "$java" ]; then JAVA="$java" break fi doneelse JAVA=javafi#加载所有jar包CLASSPATH=""for f in ${XXX_HOME}/lib/*.jar; do CLASSPATH=${CLASSPATH}":"$fdone#指定运行的主类MAIN_CLASS=XXXexec "$JAVA" -cp "$CLASSPATH" "$MAIN_CLASS"exit $?
最后exec调用java命令,-cp加载所有jar包,并制定主类,可以通过-D参数设置系统变量,也可以在主类后面加参数传给main函数。
客户端和服务器的启动脚本都可以这么写。也可以都去调用另外一个xxx-deamon.sh脚本,start和end当做不同的参数。
这样就可以打成压缩包,别人下载后通过脚本和配置文件就可以运行了。
- 按开源项目风格构建部署自己的项目
- 手动利用Apache Ant构建部署自己的Java项目
- 【学习笔记】《如何构建敏捷项目管理团队》第四章 改变自己的风格
- vue项目 构建部署
- maven命令构建自己的java项目
- caffe下构建自己的项目文件夹
- Shiny shinyapps部署自己的Shiny项目
- 腾讯云部署自己的javaweb项目
- java项目构建部署包
- ANT 构建和部署项目
- IDEA Maven 构建部署项目
- 在自己的项目中引入Material design设计风格
- 用Ant实现Java项目的自动构建和部署
- 用Ant实现Java项目的自动构建和部署
- 用Ant实现Java项目的自动构建和部署
- 用Ant实现Java项目的自动构建和部署
- 用Ant实现Java项目的自动构建和部署
- 用Ant实现Java项目的自动构建和部署
- 低通采样和带通采样定理
- vue 滑动组件
- this--Java基础041
- dp入门
- HDU 1043(八数码问题)
- 按开源项目风格构建部署自己的项目
- LeetCode - 162. Find Peak Element - 思路详解 - C++
- Android 6.0 权限解析
- HDU 5297 迭代
- 对dispatch的一点理解
- 关于MongoDB相关安装
- String to Integer (atoi)
- 【LeetCode】 435. Non-overlapping Intervals
- 排序——【模板】快速排序