maven中mvn脚本的示例分析
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,小编给大家分享一下maven中mvn脚本的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!#!/bin/sh# --
千家信息网最后更新 2025年01月23日maven中mvn脚本的示例分析
小编给大家分享一下maven中mvn脚本的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
#!/bin/sh# ----------------------------------------------------------------------------# Licensed to the Apache Software Foundation (ASF) under one# or more contributor license agreements. See the NOTICE file# distributed with this work for additional information# regarding copyright ownership. The ASF licenses this file# to you under the Apache License, Version 2.0 (the# "License"); you may not use this file except in compliance# with the License. You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing,# software distributed under the License is distributed on an# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY# KIND, either express or implied. See the License for the# specific language governing permissions and limitations# under the License.# ----------------------------------------------------------------------------# ----------------------------------------------------------------------------# Maven2 Start Up Batch script## Required ENV vars:# ------------------# JAVA_HOME - location of a JDK home dir## Optional ENV vars# -----------------# M2_HOME - location of maven2's installed home dir# MAVEN_OPTS - parameters passed to the Java VM when running Maven# e.g. to debug Maven itself, use# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000# MAVEN_SKIP_RC - flag to disable loading of mavenrc files# ----------------------------------------------------------------------------#如果系统里有多JDK版本,就可以在这里指定JAVA_HOME,这样即使JAVA_HOME环境变量不是这个,也可以从这里弥补#M2_HOME 也可以在这里指定,maven会在家目录生成.m2目录#MAVEN_OPTS 这个是设maven启动参数的,有兴趣的同学可以研究下JAVA_HOME=/usr/java/jdk1.6.0_38if [ -z "$MAVEN_SKIP_RC" ] ; then if [ -f /etc/mavenrc ] ; then . /etc/mavenrc fi if [ -f "$HOME/.mavenrc" ] ; then . "$HOME/.mavenrc" fifi#如果环境变量MAVEN_SKIP_RC存在,则从下面3个外部文件找是否设置maven的环境变量,#下面是系统环境检查,和tomcat的startup.sh一曲同工# OS specific support. $var _must_ be set to either true or false.cygwin=false;darwin=false;mingw=falsecase "`uname`" in CYGWIN*) cygwin=true ;; MINGW*) mingw=true;; Darwin*) darwin=true # # Look for the Apple JDKs first to preserve the existing behaviour, and then look # for the new JDKs provided by Oracle. # if [[ -z "$JAVA_HOME" && -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ]] ; then # # Apple JDKs # export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home fi if [[ -z "$JAVA_HOME" && -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ]] ; then # # Apple JDKs # export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home fi if [[ -z "$JAVA_HOME" && -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ]] ; then # # Oracle JDKs # export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home fi ;;esacif [ -z "$JAVA_HOME" ] ; then if [ -r /etc/gentoo-release ] ; then JAVA_HOME=`java-config --jre-home` fifi#此处貌似是为了照顾gentoo这个操作系统,特别加的,属于适应各操作系统方面的代码if [ -z "$M2_HOME" ] ; then ## resolve links - $0 may be a link to maven's home PRG="$0"#$0 ----当前shell名 # need this for relative symlinks #test -h File 文件存在并且是一个符号链接(同-L) while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG="`dirname "$PRG"`/$link" fi done #这个是排除软链接,找出真实的命令运行目录 #如果有童鞋分析过tomcat的startup.sh脚本,就可以发现,上面的脚本基本雷同 saveddir=`pwd` M2_HOME=`dirname "$PRG"`/.. # make it fully qualified M2_HOME=`cd "$M2_HOME" && pwd` cd "$saveddir" # echo Using m2 at $M2_HOMEfi#cd进入mvn的应用目录# For Cygwin, ensure paths are in UNIX format before anything is touchedif $cygwin ; then [ -n "$M2_HOME" ] && M2_HOME=`cygpath --unix "$M2_HOME"` [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`fi# For Migwn, ensure paths are in UNIX format before anything is touchedif $mingw ; then [ -n "$M2_HOME" ] && M2_HOME="`(cd "$M2_HOME"; pwd)`" [ -n "$JAVA_HOME" ] && JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" # TODO classpath?fi#上面一大串都是适应mingw和cygwin环境的,直接略过,下面才是干货#test -z 字符串 字符串的长度为零 #如果没有设置JAVA_HOME,程序就自己去找JAVA_HOMEif [ -z "$JAVA_HOME" ]; then javaExecutable="`which javac`" if [ -n "$javaExecutable" -a ! "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then #test -n 字符串的长度非零 #test 表达式1 -a 表达式2 两个表达式都为真 #link=`expr "$ls" : '.*-> \(.*\)$'` 模拟后: expr 'lrwxrwxrwx 1 root root 19 3月 17 10:12 ./bbb.sh -> /root/shell/test.sh' : '.*-> \(.*\)$' #很明确的发现是用expr来提取/root/shell/test.sh的内容 #而这个循环就可以明确其目的,排除命令为链接,找出命令真正的目录,防止后面的命令出错 # readlink(1) is not available as standard on Solaris 10. #[^] # 匹配不在指定组内的字符 #上面的判读,主要是判断which javac,是否存在.... readLink=`which readlink` if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then javaExecutable="`readlink -f \"$javaExecutable\"`" javaHome="`dirname \"$javaExecutable\"`" javaHome=`expr "$javaHome" : '\(.*\)/bin'` JAVA_HOME="$javaHome" export JAVA_HOME fi fifi#如果没有设置JAVACMD,脚本就会在JAVA_HOME目录下去找if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD="`which java`" fifi#test -x File 文件存在并且可执行 #javac命令用不了,那就报错了鸟~~~if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1fi#没有定义JAVA_HOME,脚本有自己找不到,就会在这里报错if [ -z "$JAVA_HOME" ] ; then echo "Warning: JAVA_HOME environment variable is not set."fiCLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher# For Cygwin, switch paths to Windows format before running javaif $cygwin; then [ -n "$M2_HOME" ] && M2_HOME=`cygpath --path --windows "$M2_HOME"` [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --windows "$CLASSPATH"`fi#上面一堆代码的目的,就是为了下面一句代码提供变量.....exec "$JAVACMD" \ $MAVEN_OPTS \ -classpath "${M2_HOME}"/boot/plexus-classworlds-*.jar \ "-Dclassworlds.conf=${M2_HOME}/bin/m2.conf" \ "-Dmaven.home=${M2_HOME}" \ ${CLASSWORLDS_LAUNCHER} "$@"
以上是"maven中mvn脚本的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
脚本
目录
命令
环境
变量
字符
系统
分析
代码
内容
字符串
文件
篇文章
表达式
链接
示例
操作系统
目的
长度
面的
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
pg数据库写入丢失
云数据库怎样
景观中的数据库技术
炒股软件开发vue
网易云游戏如何手动选择服务器
数据库不为空
中国邮政软件开发岗位
网络安全工程师能做什么
西安数据库大神
服务器查数据库实例
网络安全课班会记录
asp 数据库 路径
北邮网络安全考研专业课
网络安全主题探究
为什么买的服务器频繁重启
天行 无法连接代理服务器
网络安全教育过程记录
北京网数通网络技术有限公司
软件开发当前就业背景
大学计算机建立数据库表
软件开发成本b值和q值
stm32f4的软件开发
计算机网络技术学生的求职信
赞皇网络安全宣传
第七届网络安全宣传周主题
意识形态网络安全教育培训
科技基础设施接入互联网
自选软件开发相关的
网络安全意识导论pdf
网络安全是最大屏障