Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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 基于Maven概要文件的context.xml中的JNDI配置 鉴于_Java_Maven - Fatal编程技术网

Java 基于Maven概要文件的context.xml中的JNDI配置 鉴于

Java 基于Maven概要文件的context.xml中的JNDI配置 鉴于,java,maven,Java,Maven,我刚开始和maven一起做“时髦的事情”,现在我陷入了困境。我有两个需要部署到的独立服务器,每个服务器都是在context.xml 我的文件结构是这样的:(尽管如果有更好的方法,我可以改变这个) 根据部署目标,我希望使用适当的context.target.xml文件 问题: 我知道我需要设置两个不同的构建配置文件,例如: <profiles> <profile> <id>prod</id> </profile>

我刚开始和maven一起做“时髦的事情”,现在我陷入了困境。我有两个需要部署到的独立服务器,每个服务器都是在
context.xml

我的文件结构是这样的:(尽管如果有更好的方法,我可以改变这个)

根据部署目标,我希望使用适当的
context.target.xml
文件

问题: 我知道我需要设置两个不同的构建配置文件,例如:

<profiles>
  <profile>
      <id>prod</id>
  </profile>
  <profile>
    <id>devel</id>
  </profile>
</profiles> 

戳
德维尔
但从这里开始,我开始搞不清楚什么是最好的解决方案。我知道使用war插件可以排除
context.xml
,但从那以后我就不知道该怎么做了

是否有一种方法可以在我的
context.xml
中包含一个变量,我可以让maven“编写”该变量,而不是使用两个不同的配置文件


有什么建议吗?

您可以使用maven资源筛选,在maven构建生命周期的流程资源阶段明确包括或排除特定文件

<profiles>
    <profile>
        <id>prod</id>
        <resources>
            <resource>
                <directory>src/main/resources/META-INF</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/context.prod.xml</include>
                </includes>
            </resource>
        </resources>
    </profile>
    <profile>
        <id>devel</id>
        <resources>
            <resource>
                <directory>src/main/resources/META-INF</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/context.devl.xml</include>
                </includes>
            </resource>
        </resources>
    </profile>
</profiles> 

戳
src/main/resources/META-INF
真的
**/context.prod.xml
德维尔
src/main/resources/META-INF
真的
**/context.devl.xml
可以找到文档。

这里有一些提示

  • 您只需要一个
    context.xml
  • 用自定义maven属性替换
    context.xml
    中特定于服务器的条目。例如:${myServer}或${dbUser}
  • 在配置文件中定义这些属性,如下所示

戳
srv-prod.yourcompany.com
詹姆斯
德维尔
srv-devel.yourcompany.com
理查德
  • 正确配置

org.apache.maven.plugins
maven战争插件
2.5
真的
src/main/webapp/META-INF
/META-INF
真的
  • 在maven构建中激活适当的概要文件。例如,在命令行上调用
    mvn-Pprod clean package
    。或者在IDE中激活所需的配置文件。对于
    devl
    使用
    -Pdevl

context.prod.xml
contex.devl.xml
专有名称吗?关于公约、最佳做法。。。使用
prod
devl
是否需要额外编码?@Ulrich抱歉,我不知道这方面的下注实践。如果您想在打包之前更改名称,您可以随时利用maven assembly插件。这正是我想要的
<profiles>
    <profile>
        <id>prod</id>
        <resources>
            <resource>
                <directory>src/main/resources/META-INF</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/context.prod.xml</include>
                </includes>
            </resource>
        </resources>
    </profile>
    <profile>
        <id>devel</id>
        <resources>
            <resource>
                <directory>src/main/resources/META-INF</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/context.devl.xml</include>
                </includes>
            </resource>
        </resources>
    </profile>
</profiles>