【问题标题】:maven settings custom propertiesmaven设置自定义属性
【发布时间】:2012-12-17 01:05:30
【问题描述】:

我对 Maven 完全陌生。我正在尝试设置一个新项目,这样它就不需要 20 页长的带有屏幕截图的单词文档来设置它。我有 Mac 和 PC 上的开发人员,所以我需要能够自定义 catalina.home 目录,因为我不能只强加一个标准位置。我想我会在 ~/.m2/settings.xml 文件中使用以下内容:

<profile>
  <id>my-site-dev</id>
  <activation>
    <activeByDefault>true</activeByDefault>
  </activation>
  <properties>
    <catalina.home>/path/to/apache-tomcat</catalina.home>
  </properties>
</profile>

但是,这里的文档:http://maven.apache.org/guides/introduction/introduction-to-profiles.html#Profile_Pitfalls 似乎表明我想要完成的是一个坏主意。实现这一点的官方方法是什么,以便在我的 pom.xml 中我可以引用 ${catalina.home}?

现在我已经用 id 声明了我的配置文件,如果我的 pom.xml 无法加载配置文件“my-site-dev”,我是否可以使构建失败?如果可能的话,我想从 settings.xml 中删除 。我不想无缘无故干扰他们的全局设置,我想尽可能多地保持独立。

【问题讨论】:

    标签: maven build pom.xml


    【解决方案1】:

    不要使用activeByDefault,因为它会隐藏所有其他配置文件:

    这是你应该使用的:

    <profiles>
        <profile>
            <id>path-to-catalina.home-linux</id>
            <activation>
                <os>
                    <family>linux</family>
                </os>
            </activation>
            <properties>
                <catalina.home>...</catalina.home>
            </properties>
        </profile>
        <profile>
            <id>path-to-catalina.home-mac</id>
            <activation>
                <os>
                    <family>mac</family>
                </os>
            </activation>
            <properties>
                <catalina.home>...</catalina.home>
            </properties>
        </profile>
        <profile>
            <id>path-to-catalina.home-windows</id>
            <activation>
                <os>
                    <family>windows</family>
                </os>
            </activation>
            <properties>
                <catalina.home>...</catalina.home>           
               </properties>
         </profile>
    

    【讨论】:

    • 谢谢,现在我明白了发生了什么,那就完美了!
    【解决方案2】:

    您可以在 pom 中使用基于操作系统激活的配置文件。

    <profiles>
      <profile>
        <activation>
          <os>
            ...
    

    你在做什么需要 catalina.home?

    如果您正在使用 maven 部署到应用服务器,那么您已经超出了“一致、可移植的构建”规则集 - 并且超出了 maven 的主要用例/最佳实践。

    并不是说您不应该这样做 - 因为它很方便。只需确保将构建项目与部署项目分开即可。

    【讨论】:

    • 如果我不在一致的可移植构建规则集之外,那么为什么会有默认的 mvn deploy 目标?我希望开发人员能够键入 mvn deploy,运行所有测试,编译和构建战争,然后在本地部署它,这样他们就可以运行 UAT(如果有更好的方法,我也愿意)。
    • mvn deploy 表示“将构建的工件(通常是 .war 文件)”部署到 maven 存储库,因此其他项目可以依赖它而无需构建它。它与应用程序部署无关。另外,你看过tomcat.apache.org/maven-plugin-2.0吗?
    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    相关资源
    最近更新 更多