Maven - <server/> in settings.xml
settings.xml
<settings>
<servers>
<server>
<id>company.jfrog.io</id>
<username>user-name</username>
<password>user-password</password>
</server>
</servers>
</settings>
pom.xml
<repositories>
<repository>
<id>company.jfrog.io</id>
<url>https://company.jfrog.io/company/release</url>
</repository>
</repositories>
Put settings.xml
to
c:/Users/user-name/.m2/settings.xml
(for Windows),
~/.m2/settings.xml
(for Linux).
company.jfrog.io
can be any identifier, but it should be the same in settings.xml
and pom.xml
.
This works for Maven 3.
First off let me say, profiles
are one of the most powerful features of Maven.
First make a profile in your pom.xml
that looks like this:
<profiles>
<profile>
<id>tomcat-localhost</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<tomcat-server>localhost</tomcat-server>
<tomcat-url>http://localhost:8080/manager</tomcat-url>
</properties>
</profile>
</profiles>
Then in your ~/.m2/settings.xml
file add servers
entries like this:
<servers>
<server>
<id>localhost</id>
<username>admin</username>
<password>password</password>
</server>
</servers>
The configure your build
plugin like this:
<plugin>
<!-- enable deploying to tomcat -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<server>${tomcat-server}</server>
<url>${tomcat-url}</url>
</configuration>
</plugin>
This will enabled your tomcat-localhost
profile by default and allow you to deploy to it with a simple mvn clean package tomcat:deploy
.
To deploy to other targets, set up a new <server/>
entry in settings.xml
with the appropriate credentials. Add a new profile
but leave off the <activation/>
stanza and configure it to point to the appropriate details.
Then to use it do mvn clean package tomcat:deploy -P [profile id]
where the [profile id]
is the new profile.
The reason that credentials is set in the settings.xml
is because your username and password should be secret in most cases, and there is no reason to deviate from the standard way of setting up server credentials that people will have to adapt to.