Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在构建时自动替换.java文件中的模式?_Java_Netbeans_Build_Replace - Fatal编程技术网

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

有没有办法在构建时自动替换.java文件中的模式?,java,netbeans,build,replace,Java,Netbeans,Build,Replace,我希望能够在构建时替换.java文件中的特定模式。事实上,我只想替换某些字符串值来表示构建时间。(我还想保持原始源文件不变)。有没有一种简单的方法(除了手动方法)? 我正在使用NetBeans作为我的IDE。我认为Ant或Maven可能会对您有所帮助-您是否使用这两种工具来执行构建?我没有使用Maven,但在Java中也做过类似的事情。最好不要将此模式放在Java文件中,而是从资源f.g..properties文件中加载它 Maven具有资源过滤功能,您可以使用配置文件更改特定资源,或从其他位置

我希望能够在构建时替换.java文件中的特定模式。事实上,我只想替换某些字符串值来表示构建时间。(我还想保持原始源文件不变)。有没有一种简单的方法(除了手动方法)?
我正在使用NetBeans作为我的IDE。

我认为Ant或Maven可能会对您有所帮助-您是否使用这两种工具来执行构建?我没有使用Maven,但在Java中也做过类似的事情。

最好不要将此模式放在Java文件中,而是从资源f.g..properties文件中加载它
Maven具有资源过滤功能,您可以使用配置文件更改特定资源,或从其他位置复制资源。Ant还为您提供了使用各种资源位置的机会。
您始终可以手动复制另一个属性文件。在所有情况下,源java文件都是完整的。代码从IDE运行,您可以更改模式,而不必重新编译代码。

尝试使用Ant“替换”任务,下面是一个示例:

<replace file="${src}/index.html" token="@@@" value="wombat"/>


将文件${src}/index.html中出现的字符串“@@@1”替换为字符串“wombat”。

我不确定是否要编辑Java代码。但如果你使用maven,有办法解决这个问题。创建一个属性文件,创建一个为您读取属性文件的util类。在希望在生成时替换属性的其他类中使用该类

基本上

创建一个具有

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>

地方的
localval1
localval2
戳
prodval1
prodval2
创建一个读取此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、properties或prod.config、properties),在复制相应文件的位置执行资源复制。在复制到classpath之后,重命名为config.properties,我们的产品需要类似的东西(在编译的应用程序中嵌入构建时、构建计算机和用户名)

我们使用ant的
manifest
任务将一个清单嵌入到jar中,其中包含我们需要的信息。看


可以使用工具轻松地从JAR读取清单。如果您需要软件中的信息,可以通过编程方式读取,或者将其放入.properties文件(生成时生成)中,您可以从程序中读取这些信息。

我相信NetBeans使用Ant构建java项目。但我如何使用Ant进行替换呢?我认为lechlukasz在下面给出了很好的建议-将项目外部化到属性文件中,然后自动(Maven/Ant)或手动更新此文件-如果只在一个地方指定,这将更容易。f.g.代表什么?