maven replace引起的问题

本文介绍了一种使用Maven的replacer插件来更新项目中特定文件内版本号的方法。通过配置pom.xml文件中的插件参数,在构建过程中自动替换指定文件中的占位符,确保版本号的一致性和准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目打包的时候,js文件后缀类似这样的,a.js?v==TIMESTAMP 没有replace成功:

 

其中pom.xml配置如下:

<plugin>
				<groupId>com.google.code.maven-replacer-plugin</groupId>
				<artifactId>replacer</artifactId>
				<version>1.5.0</version>
				<executions>
					<execution>
						<!-- the replace should happen before the app is packaged -->
						<id>replace-for-compile</id>
						<phase>compile</phase>
						<goals>
							<goal>replace</goal>
						</goals>
						<configuration>
							<includes>
								<!-- replace the token in this file -->
								<include>**/target/**/*.jsp</include>
							</includes>
							<encoding>UTF-8</encoding>
							<regex>false</regex>
							<!-- the name of the token to replace -->
							<token>TIMESTAMP</token>
							<!-- replace it with the maven project version -->
							<value>${maven.build.timestamp}</value>
						</configuration>
					</execution>
					<execution>
						<id>replace-for-generate</id>
						<phase>generate-sources</phase>
						<goals>
							<goal>replace</goal>
						</goals>
						<configuration>
							<includes>
								<!-- replace the token in this file -->
								<include>**/src/main/resources/**/*.xml</include>
								<include>**/src/main/webapp/WEB-INF/*.xml</include>
								<include>**/src/main/resources/*.properties</include>
								<include>**/src/test/java/com/tf8/util/TestBeanFactory.java</include>
							</includes>
							<encoding>UTF-8</encoding>
							<regex>false</regex>
							<!-- the name of the token to replace -->
							<token>__artifactId__</token>
							<!-- replace it with the maven project version -->
							<value>invite</value>
						</configuration>
					</execution>
				</executions>
			</plugin>

 

 

后来修改成如下,主要是去掉了replace-for-generate



 

成功。

Properties properties = new Properties() properties.load(project.file('info.properties').newDataInputStream()) def profile = project.hasProperty('profile')? project['profile'] : 'dev' def artifact_type = '' if(profile == 'dev') { artifact_type = '-SNAPSHOT' } version = properties.getProperty("artifact_version")+artifact_type buildscript { repositories { maven { url = 'http://maven.xylink.com:8081/nexus/content/groups/public/' } } } apply plugin: 'java' apply plugin: 'idea' apply plugin: 'maven' apply plugin: 'maven-publish' sourceCompatibility = 1.8 targetCompatibility = 1.8 sourceSets { main.resources.srcDirs = ["src/main/java"] main.resources.includes = [ "**/*.json" ] } repositories { maven { url = 'http://maven.xylink.com:8081/nexus/content/groups/public/' } } jar { baseName 'xylink-cloudsdk' } dependencies { compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.17.2' compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3' compile group: 'log4j', name: 'log4j', version: '1.2.17' compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.12.3' compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.12.3' compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.12.3' compile("org.apache.httpcomponents:httpclient:4.3.5") compile("commons-httpclient:commons-httpclient:3.1") compile("org.apache.commons:commons-lang3:3.3.2") compile("com.belerweb:pinyin4j:2.5.0") compile group: 'commons-codec', name: 'commons-codec', version: '1.15' compile('org.bouncycastle:bcprov-jdk15on:1.57') compile('com.google.guava:guava:31.1-jre') testCompile("junit:junit:4.12") } //执行build后自动执行任务,打包 this.afterEvaluate { Project project -> // 找到 build task def buildTask = project.tasks.getByName('build') if (buildTask == null) { throw GradleException("build task is not found.") } // 执行 build task 之后的 packageForPublish buildTask.finalizedBy "packageForPublish" } //自动挑出需要的文件打包成zip包 task packageForPublish(type: Zip) { doLast { println "packageForPublish" } includeEmptyDirs = false delete("build/libs/cloudsdk") delete("build/libs/cloudsdk.zip") archiveName "cloudsdk.zip" destinationDir file('build/libs/') from('./') { include 'src/**' include 'build.gradle' include 'readme.txt' include 'settings.gradle' exclude '**/test/java/com/xylink/sdk/**' into 'cloudsdk' } } //替换版本号到SDKConfigMgr fileTree(project.getProjectDir()).each { if(it.isFile() && it.name.endsWith(".java") && it.name.startsWith("SDKConfigMgr")){ def content = fileReader(it.absolutePath, "private static String sdkjarVersion", " private static String sdkjarVersion = \"$version\";") fileWrite(it.absolutePath, content) return } } //读取文件并替换字符串 def fileReader(path, keyword, newString) { def readerString = ""; new File(path).withReader('UTF-8') { reader -> reader.eachLine { if (it.contains(keyword)) { it = it.replace(it, newString) } readerString <<= it readerString << '\n' } return readerString } } //写入文件 def fileWrite(path, content) { new File(path).withWriter('UTF-8') { writer -> writer.append(content) } } 修复一下
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值