4

我对 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 中删除 <activeByDefault> 。我不想无缘无故地干扰他们的全局设置,我想尽可能多地保持独立。

4

2 回答 2

3

不要使用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>
于 2013-01-02T20:04:18.403 回答
0

您可以在您的 pom 中使用基于 os.

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

你在做什么需要catalina.home?

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

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

于 2013-01-02T17:25:46.643 回答