当我在构建时使用配置文件填充属性文件时,如何在 Eclipse 中运行 Maven web 应用程序?

2022-09-04 23:08:43

以下是我的POM中的示例配置文件:

    <profiles>
    <profile>
        <id>QA</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <jdbc.url>jdbc:mysql://127.0.0.1:3306/SomeDB</jdbc.url>
            <jdbc.username>webapp</jdbc.username>
            <jdbc.password>somepassword</jdbc.password>
        </properties>
    </profile>
    ...

然后,我的资源文件夹中有一个属性文件,如下所示:

jdbc.url = ${jdbc.url}
jdbc.username = ${jdbc.username}
jdbc.password = ${jdbc.password}

最后,我在POM中打开了过滤功能:

    <build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    ...

这实际上是一个简化的例子,但你明白了。基本上当我跑步时

mvn install -P QA

Maven 将筛选我的 app.properties 文件,将所有占位符替换为配置文件中保存的值,并部署填充的属性文件。

所有这一切的问题在于我喜欢在Eclipse中使用Servers机制,在那里我在IDE中运行Tomcat。我的项目在此实例中运行,Eclipse 负责更新、重新部署等。但是,在 IDE 中的部署期间,Maven 被排除在图片之外,并且此属性文件永远不会正确填充。

那么,如何继续在 IDE 中运行我的项目,但是否正确填充了此属性文件?


答案 1

您可以通过 m2eclipse 插件有效地运行任何 Maven 命令(包括带有配置文件的命令)。此外,m2eclipse与WTP一起使用(我相信这是“服务器”选项卡的来源)。我不确定这部分,但我已经用它来在Eclipse中的Tomcat中为Maven项目部署Web应用程序。


答案 2

谢谢亚历克斯。我最终为Apache Maven(Eclipse IAM)安装了Eclipse Integration,以前是Q for Eclipse。

这个插件解决了两个问题:在 Eclipse 中的“发布到服务器”事件期间填充属性文件,以及填充 WEB-INF/lib 文件夹。以前,即使我运行 mvn eclipse:eclipse 来满足 Eclipse 中的 Build Path,它也没有将这些依赖项正确地发布到嵌入式服务器。这个插件就是这样做的。在解决了这两个问题之后,我没有看到使用嵌入式服务器在Eclipse中开发Maven项目的任何其他障碍。


推荐