将tomcat服务器凭据添加到项目的pom而不是settings.xml

时间:2013-07-24 17:39:00

标签: maven tomcat

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

我尝试将标记添加到我的POM文件中,因为当我运行“maven compile”时出现“格式错误的POM”错误,似乎不允许这样做。

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

2 个答案:

答案 0 :(得分: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

希望这有帮助!

答案 1 :(得分:4)

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

  

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

您的POM文件通常会被提交到源控制系统中,使其成为保留敏感信息的最差位置。设置文件中的密码也可以是encrypted

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