热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Maven多module打包示例

一整体结构项目根pom

一 整体结构

  

  项目根pom



dtsf
com.suning.dtsf
RDRS-V3.8.0.rc

4.0.0
dtsf-worker

pom

dtsf-worker-core
dtsf-worker-api
dtsf-worker-writer-kafka
dtsf-worker-reader-replformysql
dtsf-worker-sink-reader
dtsf-worker-sink-writer
dtsf-worker-writer-hbase
dtsf-worker-sink-pgwriter

二 core项目

  

  1 package.xml

xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
worker

dir
tar.gz

false


src/main/bin
/bin

*.*

775


../../dtsf-biz/target/classes/conf
conf

*.*





target/classes/logback.xml
conf


target/classes/worker.properties
conf


target/classes/javaopts
conf




true
/lib
runtime
true

slf4j-nop*



  startup.sh

#!/bin/bash
if [ -f "/etc/profile" ];then
source /etc/profile
fi
current_path=`pwd`
case "`uname`" in
Linux)
bin_abs_path=$(readlink -f $(dirname $0))
;;
*)
bin_abs_path=`cd $(dirname $0); pwd`
;;
esac
base=${bin_abs_path}/..
worker_cOnf=$base/conf/worker.properties
logback_cOnfigurationFile=$base/conf/logback.xml
java_opts_file=$base/conf/javaopts
export LANG=en_US.UTF-8
export BASE=$base
if [ -e $java_opts_file ]; then
source $java_opts_file
fi
if [ -f $base/bin/worker.pid ] ; then
ps -fe | grep dtsf-worker | grep -v grep > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "dtsf worker is hung up"
rm -f worker.pid
else
echo "found worker.pid , Please run stop.sh first ,then startup.sh" 2>&2
exit 1
fi
fi
if [ ! -d $base/logs/worker ] ; then
mkdir -p $base/logs/worker
fi
if [ ! -d $base/logs/gc ] ; then
mkdir -p $base/logs/gc
fi
## set java path
if [ -z "$JAVA" ] ; then
JAVA=$(which java)
fi
if [ -z "$JAVA" ]; then
echo "Cannot find a Java JDK. Please set either set JAVA or put java (>=1.5) in your PATH." 2>&2
exit 1
fi
case "$#"
in
0 )
;;
1 )
var=$*
if [ -f $var ] ; then
worker_cOnf=$var
else
echo "THE PARAMETER IS NOT CORRECT.PLEASE CHECK AGAIN."
exit
fi;;
2 )
var=$1
if [ -f $var ] ; then
worker_cOnf=$var
else
if [ "$1" = "debug" ]; then
DEBUG_PORT=$2
DEBUG_SUSPEND="y"
JAVA_DEBUG_OPT="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=$DEBUG_SUSPEND"
fi
fi;;
* )
echo "THE PARAMETERS MUST BE TWO OR LESS.PLEASE CHECK AGAIN."
exit;;
esac
str=`file -L $JAVA | grep 64-bit`
if [ -n "$JAVA_OPTS_CONF" ]; then
JAVA_OPTS=$JAVA_OPTS_CONF
elif [ -n "$str" ]; then
JAVA_OPTS="-server -Xms32G -Xmx32G -Xmn2048m -XX:SurvivorRatio=2 -Xss256k -XX:-UseAdaptiveSizePolicy -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${BASE}/logs/gc/gc-worker-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=20 -XX:GCLogFileSize=1024K"
else
JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${BASE}/logs/gc/gc-worker-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=20 -XX:GCLogFileSize=1024K"
fi
JAVA_OPTS=" $JAVA_OPTS -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8"
# -Dcom.sun.management.jmxremote.port=9333 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
WORKER_OPTS="-DappName=dtsf-worker -Dlogback.cOnfigurationFile=$logback_configurationFile -Djava.opts.file=$java_opts_file -Dworker.cOnf=$worker_conf -Dworker.home=$base"
if [ -e $worker_conf -a -e $logback_configurationFile ]
then
for i in $base/lib/*;
do CLASSPATH=$i:"$CLASSPATH";
done
CLASSPATH="$base/conf:$CLASSPATH";
echo "cd to $bin_abs_path for workaround relative path"
cd $bin_abs_path
echo LOG CONFIGURATION : $logback_configurationFile
echo worker conf : $worker_conf
echo CLASSPATH :$CLASSPATH
echo JAVA_OPTS :$JAVA_OPTS
$JAVA $JAVA_OPTS $JAVA_DEBUG_OPT $WORKER_OPTS -classpath .:$CLASSPATH com.suning.dtsf.worker.core.boot.WorkerBooter 1>>$base/logs/worker/worker.log 2>&1 &
echo $! > $base/bin/worker.pid
echo "cd to $current_path for continue"
cd $current_path
else
echo "worker conf("$worker_conf") OR log configration file($logback_configurationFile) is not exist,please create then first!"
fi
echo "worker has been started."
#echo "append worker cron script"
#if [ ! -f "/var/spool/cron/root" ];then
# touch /var/spool/cron/root
#fi
#grep "startup.sh" /var/spool/cron/root
#if [ $? -ne 0 ];then
# cron_asterisk="* * * * *"
# cron_cOntent="$base/bin/startup.sh"
# echo "$cron_asterisk sh $cron_content" >> /var/spool/cron/root
# if [ -f "/etc/init.d/crond" ];then
# /etc/init.d/crond restart
# fi
#fi

  stop.sh

#!/bin/bash
echo "uninstall cron"
grep "startup.sh" /var/spool/cron/root
if [ $? -eq 0 ];then
sed -i "/startup.sh/d" /var/spool/cron/root
if [ ! -f "/etc/init.d/crond" ];then
/etc/init.d/crond restart
fi
fi
cygwin=false;
linux=false;
case "`uname`" in
CYGWIN*)
cygwin=true
;;
Linux*)
linux=true
;;
esac
get_pid() {
STR=$1
PID=$2
if $cygwin; then
JAVA_CMD="$JAVA_HOME\bin\java"
JAVA_CMD=`cygpath --path --unix $JAVA_CMD`
JAVA_PID=`ps |grep $JAVA_CMD |awk '{print $1}'`
else
if $linux; then
if [ ! -z "$PID" ]; then
JAVA_PID=`ps -C java -f --width 1000|grep "$STR"|grep "$PID"|grep -v grep|awk '{print $2}'`
else
JAVA_PID=`ps -C java -f --width 1000|grep "$STR"|grep -v grep|awk '{print $2}'`
fi
else
if [ ! -z "$PID" ]; then
JAVA_PID=`ps aux |grep "$STR"|grep "$PID"|grep -v grep|awk '{print $2}'`
else
JAVA_PID=`ps aux |grep "$STR"|grep -v grep|awk '{print $2}'`
fi
fi
fi
echo $JAVA_PID;
}
base=`dirname $0`/..
pidfile=$base/bin/worker.pid
if [ ! -f "$pidfile" ];then
echo "worker is not running. exists"
exit
fi
pid=`cat $pidfile`
if [ "$pid" == "" ] ; then
pid=`get_pid "appName=dtsf-worker"`
fi
echo -e "`hostname`: stopping worker $pid ... "
kill $pid
LOOPS=0
while (true);
do
gpid=`get_pid "appName=dtsf-worker" "$pid"`
if [ "$gpid" == "" ] ; then
echo "Oook! cost:$LOOPS"
if [ -f "$pidfile" ];then
`rm $pidfile`
fi
break;
fi
let LOOPS=LOOPS+1
sleep 1
done

  pom.xml



dtsf-worker
com.suning.dtsf
RDRS-V3.8.0.rc

4.0.0
dtsf-worker-core

......




org.apache.maven.plugins
maven-compiler-plugin

8
8



org.apache.maven.plugins
maven-jar-plugin
3.1.0



com.ucar.datalink.worker.core.boot.WorkerBooter



**/logback.xml
**/worker.properties




maven-assembly-plugin




com.ucar.datalink.worker.core.boot.WorkerBooter


dtsf
${project.parent.parent.build.directory}

src/main/assembly/package.xml




package

single






三 reader-mysql

  

  package.xml 

xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
reader-mysql

dir

false


true
/

com.suning.dtsf:dtsf-worker-reader-replformysql



false
/lib
runtime
true

com.suning.dtsf:dtsf-worker-api
fastjson*
lz4*
slf4j*
log4j
connect-api*
kafka-clients*
commons-logging*
simpleclient*



  pom.xml



dtsf-worker
com.suning.dtsf
RDRS-V3.8.0.rc

4.0.0
dtsf-worker-reader-replformysql

......




maven-assembly-plugin



src/main/assembly/package.xml

reader-replformysql
false
${project.parent.parent.build.directory}/dtsf-worker/plugin/reader




package

single






 



推荐阅读
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 这个问题困扰了我两天,卸载Dr.COM客户端(我们学校上网要装这个客户端登陆服务器,以后只能在网页里输入用户名和密码了),问题解决了。问题的现象:在实验室机台式机上安装openfire和sp ... [详细]
author-avatar
手机用户2502873837
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有