我希望能够在构建时替换.java文件中的特定模式。实际上,我只想替换某些String值来表示构建时间。 (我还想保留原始源文件)。有没有办法轻松完成(除了手动方式)? 我正在使用NetBeans作为我的IDE。
答案 0 :(得分:8)
最好不要将此模式放在java文件中,而是从资源加载它,例如。 .properties文件。
Maven具有资源过滤功能,您可以使用配置文件更改特定资源,或从其他位置复制资源。 Ant也给了你使用各种资源位置的机会。
您始终可以手动复制其他属性文件。在所有情况下,源java文件都是完整的。代码从IDE运行,您可以更改模式而不重新编译代码。
答案 1 :(得分:3)
我们需要与我们的产品类似的东西(嵌入构建时间,在编译的应用程序中构建计算机和用户名)。
我们使用ant的manifest
任务将清单嵌入到jar中,其中包含我们需要的信息。请参阅http://ant.apache.org/manual/Tasks/manifest.html。
可以使用工具轻松地从JAR中读取清单。如果您需要软件中的信息,可以以编程方式阅读,或将其放入.properties文件(在构建时生成),您可以从程序中读取这些文件。
答案 2 :(得分:2)
我不确定编辑Java代码。但如果你使用maven,就有办法解决这个问题。创建一个属性文件,创建一个为您读取属性文件的util类。在要在构建时替换属性的其他类中使用此类。
基本上,
创建具有
的config.propertiesmyprop1=${val1}
myprop2=${val2}
编写一个包含配置文件的maven pom.xml并执行此操作
<profiles>
<profile>
<id>local</id>
<properties>
<val1>localval1</val1>
<val2>localval2</val2>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<val1>prodval1</val1>
<val2>prodval2</val2>
</properties>
</profile>
</profiles>
创建一个读取此config.properties的类。并用它来读取动态数据。
使用mvn -Plocal clean install或mvn -Pprod clean install构建的值将在config.properties中根据配置文件替换。
希望这有帮助。
使用ANT,您也可以这样做。在ANT中,您可以创建多个配置文件,例如local.config.properties和prod.config.properties。在构建时,您可以传递“local”或“prod”之类的参数。
通过将参数添加到config.properties(从而复制local.config,属性或prod.config,属性)来执行复制适当文件的资源复制。复制到classpath后,重命名为config.properties
答案 3 :(得分:1)
我认为Ant或Maven对您有所帮助 - 您是否使用其中任何一个来执行构建?我没有使用过Maven,但是在Java中做过类似的事情。
答案 4 :(得分:1)
尝试使用Ant“替换”任务,这是一个例子:
<replace file="${src}/index.html" token="@@@" value="wombat"/>
在文件$ {src} /index.html中用字符串“wombat”替换字符串“@@@”的出现次数。