热门标签 | 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






 



推荐阅读
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 中科院学位论文排版指南
    随着毕业季的到来,许多即将毕业的学生开始撰写学位论文。本文介绍了使用LaTeX排版学位论文的方法,特别是针对中国科学院大学研究生学位论文撰写规范指导意见的最新要求。LaTeX以其精确的控制和美观的排版效果成为许多学者的首选。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 深入解析Java多线程与并发库的应用:空中网实习生面试题详解
    本文详细探讨了Java多线程与并发库的高级应用,结合空中网在挑选实习生时的面试题目,深入分析了相关技术要点和实现细节。文章通过具体的代码示例展示了如何使用Semaphore和SynchronousQueue来管理线程同步和任务调度。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文详细探讨了Java中的ClassLoader类加载器的工作原理,包括其如何将class文件加载至JVM中,以及JVM启动时的动态加载策略。文章还介绍了JVM内置的三种类加载器及其工作方式,并解释了类加载器的继承关系和双亲委托机制。 ... [详细]
  • 2017-2018年度《网络编程与安全》第五次实验报告
    本报告详细记录了2017-2018学年《网络编程与安全》课程第五次实验的具体内容、实验过程、遇到的问题及解决方案。 ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
  • 本文详细介绍了如何在 Android 开发中高效地管理和使用资源,包括本地资源和系统资源的访问方法。通过实例和代码片段,帮助开发者更好地理解和应用资源管理的最佳实践。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
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社区 版权所有