Java 为什么在maven构建中两种类型的bash变量用法不同
我在maven项目中有一个bash脚本来运行我的应用程序。我在bash脚本中使用了两种不同类型的变量用法来编译我的项目: 一, 二, 过滤器如下所示:Java 为什么在maven构建中两种类型的bash变量用法不同,java,maven,Java,Maven,我在maven项目中有一个bash脚本来运行我的应用程序。我在bash脚本中使用了两种不同类型的变量用法来编译我的项目: 一, 二, 过滤器如下所示: filter.component.java.opts=-mx4096M $JAVA_OPTS $JACOCO_OPTS filter.component.gc.opts=-XX:+UseG1GC jacoco.version和component.mainclass在pom.xml中定义: <jacoco.version>0.7.6.
filter.component.java.opts=-mx4096M $JAVA_OPTS $JACOCO_OPTS
filter.component.gc.opts=-XX:+UseG1GC
jacoco.version
和component.mainclass
在pom.xml
中定义:
<jacoco.version>0.7.6.201602180812</jacoco.version>
<component.mainclass>MyAppStarter</component.mainclass>
如果我使用前面提到的变量定义方式,则在构建后传递到JAVA
的${JAVA_OPTS}
将被-mx4096M
替换,但另一种方式是$JAVA_OPTS
将更改为-Xmx3072m-XX:MaxPermSize=1024m-Djava.net.preferIPv4Stack=true
在LinuxBash脚本中,$JAVA\u OPTS
和${JAVA\u OPTS}
之间没有区别;对于java
或maven
,这两者之间有什么区别
编辑1:
对于我提到的最后一个变量用法,JAVA_OPTS
的变量替换发生在构建过程中。我的意思是,对于第二种方法,当maven构建完成时,最后一行不再包含JAVA_OPTS
,但是对于第一种方法,不会发生任何更改
对于第一种方式,构建后的最后一行是:
java $GC_OPTS $JAVA_OPTS -classpath $CLASSPATH $MAINCLASS $*
在第一秒钟,我收到了最后一行:
java ${GC_OPTS} -Xmx3072m -XX:MaxPermSize=1024m -Djava.net.preferIPv4Stack=true -classpath ${MAINCLASS} $*
编辑2:
我已将这两个echo命令放在最后两个脚本的JAVA_OPTS=“${filter.component.JAVA.OPTS}”行之后的:
两者的结果是相同的:
test 1 >> -mx4096M -javaagent:../lib/jacoco-javaagent-0.7.6.201602180812.jar=jmx=true,output=tcpserver,address=*,port=6302,includes=*
test 2 >> -mx4096M -javaagent:../lib/jacoco-javaagent-0.7.6.201602180812.jar=jmx=true,output=tcpserver,address=*,port=6302,includes=*
编辑3:
在构建之前,我使用echo
命令检查了环境变量:
echo 'JAVA_OPTS: '${JAVA_OPTS}
事实证明,JAVA\u OPTS
是在我的环境中设置的:
JAVA_OPTS: -Xmx3072m -XX:MaxPermSize=1024m -Djava.net.preferIPv4Stack=true
${…}
使用的语法:
这些由${…}分隔符表示的变量可以来自系统属性、项目属性、过滤器资源和命令行
所以在第二个脚本的最后一行,当maven resource plugin看到${JAVA_OPTS}
时,它会在环境中搜索JAVA_OPTS
,然后用它替换它。plz在JAVA_OPTS=“${filter.component.JAVA.OPTS}”行之后添加echo$JAVA_OPTS
,并在两个脚本中共享结果。@TaherKhorshidi,请查看我的编辑。我的项目的pom.xml
和maven的settings.xml
都不包含JAVA\u OPTS
。这个财产的价值来自哪里?来自环境
echo "test 1 >> "$JAVA_OPTS
echo "test 2 >> "${JAVA_OPTS}
test 1 >> -mx4096M -javaagent:../lib/jacoco-javaagent-0.7.6.201602180812.jar=jmx=true,output=tcpserver,address=*,port=6302,includes=*
test 2 >> -mx4096M -javaagent:../lib/jacoco-javaagent-0.7.6.201602180812.jar=jmx=true,output=tcpserver,address=*,port=6302,includes=*
echo 'JAVA_OPTS: '${JAVA_OPTS}
JAVA_OPTS: -Xmx3072m -XX:MaxPermSize=1024m -Djava.net.preferIPv4Stack=true