maven pom进阶教程 - properties、filter

很多范例的pom.xml, 都有${basedir}之类的占位符,maven处理pom.xml时,会将这些占位符,替换为对应的值(即插值过程)
maven的pom教程中定义了5种基本类型的property,但是像${basedir}这样的变量并不属于任何一类, 我在这里称之为pom变量,于是就有6种类型的属性。 ####环境变量 引用格式为${env.X}, 例如 ${env.PATH}表示环境变量中的PATH
####project变量
即引用pom.xml中的其它元素,引用格式为${project.x}, 举个例子

   <version>0.9</version>
	<properties>
		<!-- 自定义变量 -->
		<myproperty>my value</myproperty>
	</properties>
   <build>
       <finalName>it's my final name</finalName>
   </build>
</project>

${project.version}的值为0.9 ${project.build.finalName}的值为it's my final name ####**setting.xml变量 ** 引用maven安装目录下的conf/setting.xml中的值, 格式为${setting.x} ####java系统变量 引用方式${VariableName}, 比如${java.home}, 更多参数可以在oracle的官网上查到https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html。也包括执行mvn指令时,附带的-Dkey=value这种形式的变量 ####自定义变量 上面的例子myproperty就是自定义的变量,引用方式为${mypoperty} ####pom变量 经常看到以下三个变量(定义在http://maven.apache.org/components/ref/3-LATEST/maven-model-builder/),
${project.basedir} pom.xml所在目录
${basedir} 同上
${project.build.sourceEncoding}, 源文件的编译类型,可以在properties标签下重写这个变量,将值改变为UTF-8, windows上都需要这么做。(如果出现了资源文件编码不匹配之类的错误,也可以修改插件maven-resources-plugin的配置)

###资源文件插值filter 直接举例子
新建资源文件src/main/resources/my.txt,内容为
test filter, project basedir is ${project.basedir}
开启pom的filters配置

	<build>
		<filters>
			<filter>src/main/resources/my.txt</filter>
		</filters>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering><!--启用插值处理-->
			</resource>
		</resources>
	</build>

执行mvn compile
打开\target\classes\my.txt, 内容变成了
test filter, project basedir is D:\xxx\xxx\test
处理资源文件的插件maven-resources-plugin也可以开启资源文件的插值操作

转载于:https://my.oschina.net/u/2343729/blog/830919

当使用tomcat7-maven-plugin插件打包成jar包并运行时出现页面乱码,可能是由于编码设置不正确造成的。 首先,我们需要检查项目中的编码设置。在pom.xml文件中,确保以下配置已正确设置: ``` <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> ``` 确保项目的源代码文件(.java)使用UTF-8编码保存,避免编码转换错误。 另外,我们还需要检查部署到tomcat中的web.xml文件是否正确设置了字符编码: ``` <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 这段配置将确保请求和响应的字符编码都是UTF-8。 如果以上步骤都正确设置并且页面仍然出现乱码,可能是由于代码中不正确的字符编码处理导致的。请检查代码中是否正确处理了字符编码,例如使用了String的getBytes()方法时指定了正确的字符编码。 另外,还可以尝试在项目的web.xml文件中添加以下配置,让tomcat使用UTF-8编码处理请求和响应: ``` <connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> ``` 最后,如果以上方法都没有解决问题,可能是因为使用tomcat7-maven-plugin插件不太适合用来创建可运行的jar包。可以尝试使用maven-assembly-plugin插件或者spring-boot-maven-plugin插件来创建可运行的jar包,并且检查这些插件的配置是否正确设置了字符编码。 希望以上方法对解决页面乱码问题有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值