我无法让 Maven 使用 ~/.m2/settings.xml 中定义的属性?

发布于 2024-12-11 22:53:52 字数 207 浏览 0 评论 0原文

我使用 ~/.m2/settings.xml 来存储项目中 pom.xml 文件中使用的许多属性名称。如果我使 XML 无效(例如,通过添加另一个 <),maven 会立即生成一个错误,指出它无法解析该文件。如果我使 XML 保持有效,则 appBeans.xml 文件中的设置不会选择对 settings.xml 中定义的属性的引用。

有人遇到过这个问题吗?我有点不知所措了。

I am using ~/.m2/settings.xml to store a number of property names used throughout the pom.xml files in my project. If I make the XML invalid (by adding another < for example), maven immediately generates an error, saying that it cannot parse that file. If I leave the XML valid, settings in my appBeans.xml file do not pick of references to properties defined in settings.xml.

Has anyone experienced this problem? I am sort of at my wits end here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冰魂雪魄 2024-12-18 22:53:53

通过资源过滤来反映 Maven 配置的属性。

确保您的 settings.xml、项目 pom 和目标 xml 文件包含正确的配置并位于正确的位置。

如果我理解正确的话,您希望在 settings.xml 中存储属性名称和值,以便可以在项目文件中使用这些属性。我将提供一个工作示例:

settings.xml 中定义默认配置文件和属性:

<profiles>
    <profile>
        <id>default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <someProp>Value</someProp>
        </properties>
    </profile>
</profiles>

pom.xml 中定义资源文件夹的过滤=true:

<build>
    <resources>
        <resource>
            <directory>${basedir}/src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

在 xml 中定义属性文件(位于src/main/resources 文件夹中):

...
<element>${someProp}</element>
...

在此之后,您应该在 target/classes/appBeans.xml 中看到过滤结果。

请记住,如果您使用 Eclipse & m2eclipse 或类似插件,如果不重新启动 Eclipse,它可能不会开始使用更新的 settings.xml,并且它的自动构建有时会覆盖目标文件夹中的文件。我在这里说的是经验:)

Reflecting properties from Maven configurations works by resources filtering.

Make sure your settings.xml, project pom and the target xml file contain correct configurations and reside in correct places.

If I understood correctly, you want to store a property name and value in the settings.xml so the props can be used in your project files. I'll provide a working example:

Define a default profile and properties in settings.xml:

<profiles>
    <profile>
        <id>default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <someProp>Value</someProp>
        </properties>
    </profile>
</profiles>

Define resource folder's filtering=true in pom.xml:

<build>
    <resources>
        <resource>
            <directory>${basedir}/src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

Define the property in the xml file (that resides in the src/main/resources folder):

...
<element>${someProp}</element>
...

After this you should see the filtered result e.g. in target/classes/appBeans.xml.

Bear in mind that if you're using Eclipse & m2eclipse or similar plugin, it probably won't start using the updated settings.xml without restarting Eclipse and it's automatic build will sometimes overwrite your files in the target folder. I'm talking from experience here :)

江湖彼岸 2024-12-18 22:53:53

Maven 属性不会反映在各种 XML 文件中。

如果将这些属性之一添加到运行读取 allBeans.xml 的特定插件的特定 pom 的 元素中,这是否有效?我相信不会,您的问题将是添加到插件的 中以将 Maven 属性传递给它。

如果您编辑问题以显示处理 appBeans.xml 的插件,我可以使其更具体。

Maven properties do not get reflected in miscellaneous XML files.

If you add one of these properties to the <properties/> element of the specific pom that runs the specific plugin that reads allBeans.xml, does that work? I believe that it will not, and your problem will turn out to be adding to the <configuration/> for the plugin to pass the maven properties to it.

If you edit your question to show the plugin that processes appBeans.xml I can make this more specific.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文