我有几个由maven构建的项目,我想在它们之间共享一些常见的属性 - spring版本,mysql驱动程序版本,svn base url等等 - 所以我可以更新它们一次,它将反映在所有项目中.
我想过有一个带有所有属性的超级pom,但如果我改变其中一个问题,我需要增加它的版本(并更新所有poms继承它)或从所有开发人员的机器中删除它我不想这样做.
可以在pom外部指定这些参数吗?我仍然希望在父pom中具有外部位置定义.
我想用Ant替换源文件中的标记:
some test ${foo} other text ...
Run Code Online (Sandbox Code Playgroud)
标记包含在属性文件中,例如:
foo=1
Run Code Online (Sandbox Code Playgroud)
实际上,如果源文件中的标记类似于'@@ foo @@'或'foo',但是我无法替换整个标记,这很容易:$ {foo}
我几年前就成功了,但这次我失败了......
谢谢
我有一个使用多个配置文件的应用程序(这里只考虑appli.properties).这些文件包含几个取决于环境的值.我们可以找到一些信息,例如:
server.port=${envi.server.port}
Run Code Online (Sandbox Code Playgroud)
另一方面,我有一组属性文件,每个环境一个(dev.properties,homolo.properties等).它们包含配置文件中某些属性的值.我们可以在这里找到这种属性:
envi.server.port=4242
Run Code Online (Sandbox Code Playgroud)
我的构建由Maven2处理.一切都很好.
但是,我现在需要将我的项目导入Eclipse.我主要关心的是配置文件过滤.事实上,如果我不为我的项目我的Eclipse的参数做任何修改(一后MVN日食:日食命令),那么我所有的配置文件将保持属性键(即${envi.server.port}),而不是它们的值.有了这样的配置文件,我的应用程序将无法在Eclipse中运行...
所以我试了两个解决方案:
这两种解决方案的常见问题是,每次操作都会进行过滤(基本上可以节省Java类版本),然后需要时间.然而,第二种解决方案比第一种解决方案(超过10秒)更快(3秒).
您如何看待我的方法?你会怎样以更好的方式做到这一点?
构建之后,我需要修改一个HTML文件,指向客户端下载新应用程序.
我搜索一个令牌; 用链接和令牌替换它:
<replace file="index.html" >
<!-- this searches for literal text ${MyTOKEN} -->
<!-- does not "expand" ${MyTOKEN} before searching -->
<replacetoken>${MyTOKEN}</replacetoken>
<replacevalue>"some link" <br> ${MyTOKEN}</replacevalue>
</replace>
Run Code Online (Sandbox Code Playgroud)
此代码不能移动到模板构建脚本中,因为replacetoken和replacevalue标签将文本作为文字 - 它们不在expandproperties我的ANT版本中.
我想使用属性来定义"some link"和MyTOKEN值.
使用属性的解决方法"some link"是filterchain在替换后使用a 并复制文件:
<copy file="index.html" tofile="index2.html" >
<filterchain>
<!-- this converts the ${xxx} properties into their values -->
<expandproperties />
</filterchain>
</copy>
Run Code Online (Sandbox Code Playgroud)
但是这replace已经完成了 - 所以这意味着我仍然需要将MyTOKEN值直接硬编码到构建脚本中.