如何在Java中向两个maven模块中注入变量值?
我有一个带有pom.xml的大项目,这个项目中的几个模块都有自己的pom.xml。其中两个模块依赖于同一个变量(数据库名称) 是否有一个现有的模式在一个地方命名这个变量,并将它注入到两个项目中?我想有一个maven插件,但是找不到如何在Java中向两个maven模块中注入变量值?,java,maven,module,Java,Maven,Module,我有一个带有pom.xml的大项目,这个项目中的几个模块都有自己的pom.xml。其中两个模块依赖于同一个变量(数据库名称) 是否有一个现有的模式在一个地方命名这个变量,并将它注入到两个项目中?我想有一个maven插件,但是找不到 变量需要被注入到java文件和xml文件中我在评论中说过这一点,但我相信这正是您要寻找的。您可以使用MAVEN_OPTS指定在运行时注入的变量 export MAVEN_OPTS="-D{parameter_name}={parameter-value}" 因此,如
变量需要被注入到java文件和xml文件中我在评论中说过这一点,但我相信这正是您要寻找的。您可以使用
MAVEN_OPTS
指定在运行时注入的变量
export MAVEN_OPTS="-D{parameter_name}={parameter-value}"
因此,如果您想要一个名为“foo”且值为“bar”的变量,您可以这样做
export MAVEN_OPTS="-Dfoo=bar"
要在XML文件中访问此变量,可以使用${foo}
(或任何您称之为它的名称),如下所示:
<value>classpath:contexts/${foo}.properties</value>
classpath:contexts/${foo}.properties
(以上只是我正在从事的一个使用相同技术的项目的一个片段)我在评论中说了这一点,但我相信这就是你想要的。您可以使用
MAVEN_OPTS
指定在运行时注入的变量
export MAVEN_OPTS="-D{parameter_name}={parameter-value}"
因此,如果您想要一个名为“foo”且值为“bar”的变量,您可以这样做
export MAVEN_OPTS="-Dfoo=bar"
要在XML文件中访问此变量,可以使用${foo}
(或任何您称之为它的名称),如下所示:
<value>classpath:contexts/${foo}.properties</value>
classpath:contexts/${foo}.properties
(以上只是我正在处理的一个使用相同技术的项目的一个片段)我的解决方案是在chef部署中包含该变量,这样我们就可以将它保存到配置文件中。从那里,Java代码可以访问变量 xml文件是一个Oozie工作流,因此我还使用chef将相同的变量存放到Oozie协调器中 这个答案可能不会帮助任何试图只用maven解决这个问题的人,但它是对我有效的解决方案
我相信如果您只处理java问题,java.util.Properties可能会有所帮助 我的解决方案是在chef部署中包含该变量,这允许我们将其存放到配置文件中。从那里,Java代码可以访问变量 xml文件是一个Oozie工作流,因此我还使用chef将相同的变量存放到Oozie协调器中 这个答案可能不会帮助任何试图只用maven解决这个问题的人,但它是对我有效的解决方案
我相信如果您只处理java问题,java.util.Properties可能会有所帮助 听起来像java配置而不是maven配置?如果是这种情况,您应该考虑在运行时加载的外部化配置文件。为什么不添加一个公共项目呢?对于maven,我认为您可以使用父pom共享属性。您可能是对的。当我只需要一个变量时,创建一个完整的配置文件是错误的。您可以共享属性,但我认为pom不能将这些属性传递到java文件中。我正在寻找java文件中可以执行变量=,然后在构建时maven将变量注入到它看到的文件中。外部配置文件或其他解决方案可能也可以工作。听起来像java配置,而不是maven配置?如果是这种情况,您应该考虑在运行时加载的外部化配置文件。为什么不添加一个公共项目呢?对于maven,我认为您可以使用父pom共享属性。您可能是对的。当我只需要一个变量时,创建一个完整的配置文件是错误的。您可以共享属性,但我认为pom不能将这些属性传递到java文件中。我正在寻找java文件中可以执行变量=,然后在构建时maven将变量注入到它看到的文件中。外部配置文件或其他解决方案可能也可以工作。听起来像java配置,而不是maven配置?如果是这种情况,您应该考虑在运行时加载的外部化配置文件。为什么不添加一个公共项目呢?对于maven,我认为您可以使用父pom共享属性。您可能是对的。当我只需要一个变量时,创建一个完整的配置文件是错误的。您可以共享属性,但我认为pom不能将这些属性传递到java文件中。我正在寻找java文件中可以执行变量=,然后在构建时maven将变量注入到它看到的文件中。外部配置文件或其他解决方案可能也可以工作。