4

我希望能够在我的本地开发安装的 tomcat 上构建和部署我的 java webapp,而无需在每台开发计算机上将 tomcat 用户的凭据添加到 maven 的 settings.xml 中。我发现的每篇文章都需要修改 settings.xml。

我尝试将标签添加到我的 POM 文件中,但似乎不允许这样做,因为我在运行“maven compile”时收到有关“格式错误的 POM”的错误。

<project...>
    ...
    <servers>
        <server>
            <id>localhost</id>
            <username>admin</username>
            <password>password</password>
        </server>
    </servers>
    <dependencies>
    ...
    </dependencies>
</project>
4

2 回答 2

6

你可以试试这个:

<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <url>${server-url}</url> <path>${deploy-path}</path> <username>${deploy-un}</username> <password>${deploy-pw}</password> </configuration> </plugin>

当您的项目中有许多模块时,请在每个模块中使用<profile>以将每个模块部署到不同的URLs. 前任:

在模块 A 中:

<profile> <id>server1</id> <properties> <!-- Replace with URL and authentication if needed --> <server-url>http://localhost:8080/manager/text</server-url> <deploy-path>/moduleA</deploy-path> <deploy-un>tomcatscript</deploy-un> <deploy-pw>p@ssw0rd</deploy-pw> </properties> </profile>

在模块 B 中:

<profile> <id>server1</id> <properties> <!-- Replace with URL and authentication if needed --> <server-url>http://localhost:8080/manager/text</server-url> <deploy-path>/moduleB</deploy-path> <deploy-un>tomcatscript</deploy-un> <deploy-pw>p@ssw0rd</deploy-pw> </properties> </profile>

不要忘记将其添加到您的tomcat/conf/tomcat-users.xml

<role rolename="manager-script"/> <role rolename="manager-jmx"/> <user username="tomcatscript" password="p@ssw0rd" roles="manager-script, manager-jmx"/>

然后在终端,使用这个:mvn tomcat7:[re]deploy -Pserver1

moduleA将部署到http://localhost:8080/moduleA,

moduleB将部署到http://localhost:8080/moduleB

希望这可以帮助!

于 2014-10-14T04:06:47.570 回答
4

答案在您引用的文章末尾给出

在 settings.xml 中设置凭据的原因是因为您的用户名和密码在大多数情况下应该是保密的,并且没有理由偏离人们必须适应的设置服务器凭据的标准方式。

您的 POM 文件通常会提交到源代码控制系统,使其成为保存敏感信息的最糟糕的地方。设置文件中的密码也可以加密

最后,POM 文件旨在保存有关如何构建代码的信息。设置文件旨在为您的构建设置环境特定设置。诸如 Maven 存储库位置之类的项目。有关如何部署代码的信息也属于这一类,你和我可能共享一个代码库,但我们不太可能共享同一个 tomcat 服务器。

于 2013-07-24T21:12:45.050 回答