有没有办法在构建时自动替换.java文件中的模式?

时间:2010-12-23 09:37:06

标签: java netbeans build replace

我希望能够在构建时替换.java文件中的特定模式。实际上,我只想替换某些String值来表示构建时间。 (我还想保留原始源文件)。有没有办法轻松完成(除了手动方式)? 我正在使用NetBeans作为我的IDE。

5 个答案:

答案 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.properties
myprop1=${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”替换字符串“@@@”的出现次数。