org.apache.maven.plugins
maven-war-plugin
2.6
false
https://www.mkyong.com/maven/maven-webxml-attribute-is-required/
org.apache.maven.plugins
maven-war-plugin
2.6
false
https://www.mkyong.com/maven/maven-webxml-attribute-is-required/
This plugin uses the Java API for XML Binding (JAXB), version 2+, to generate Java classes from XML Schemas (and optionally binding files) and to create XML Schemas from annotated Java classes. The plugin delegates most of its work to either of the two JDK-supplied tools XJC and Schemagen, through its JAXB implementation dependencies.
http://www.mojohaus.org/jaxb2-maven-plugin/Documentation/v2.2
Amazon S3 is a perfect place for keeping private Maven artifacts. I assume you keep public artifacts in Maven Central because you want them to be available to everybody. Private artifacts are those you don’t want visible to anyone except members of your team. Thus, you want to deploy your .jar
files there and make sure they are visible only by your team. Here is how we do this in all our Java projects.
First, you create a new S3 bucket. I would recommend you name it using your project domain and a prefix. For example, with repo.teamed.io
, repo
is a prefix and teamed.io
is the domain.
There’s no need to configure any permissions for this bucket. Just create it through the Amazon S3 console.
Create a new IAM user. I recommend you name it like teamed-maven
if your project name is teamed
.
Add a new “inline policy” to the user:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::repo.teamed.io",
"arn:aws:s3:::repo.teamed.io/*"
]
}
]
}
Here, repo.teamed.io
is the name of the S3 bucket you created a minute ago.
Make sure you have an “access key” for this new user. It must look similar to this:
key: AKIAI9NNNJD5D7X4TUVA
secret: t5tZQCwuaRhmlOXfbGE5aTBMFw34iFyxfCEr32av
The key is 20 characters (all caps), and the secret is 40 characters.
settings.xml
Add this configuration to your ~/.m2/settings.xml
file:
<settings>
<servers>
<server>
<id>repo.teamed.io</id>
<username>AKIAI9NNNJD5D7X4TUVA</username>
<password>t5tZQCwuaRhmlOXfbGE5aTBMFw34iFyxfCEr32av</password>
</server>
[...]
</servers>
[...]
</settings>
pom.xml
Add this configuration to pom.xml
:
<project>
<distributionManagement>
<snapshotRepository>
<id>repo.teamed.io</id>
<url>s3://repo.teamed.io/snapshot</url>
</snapshotRepository>
<repository>
<id>repo.teamed.io</id>
<url>s3://repo.teamed.io/release</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>repo.teamed.io</id>
<url>s3://repo.teamed.io/release</url>
</repository>
</repositories>
[...]
</project>
Then, configure S3 Wagon, also in pom.xml
:
<project>
<build>
<extensions>
<extension>
<groupId>org.kuali.maven.wagons</groupId>
<artifactId>maven-s3-wagon</artifactId>
<version>1.2.1</version>
</extension>
</extensions>
[...]
</build>
</project>
You’re ready to go. You can deploy your artifacts just by running Maven from the command line:
$ mvn clean deploy
s3auth.com
Now you want to see these artifacts in your browser, in a secure mode, by providing secure credentials. I recommend you use s3auth.com, as explained in Basic HTTP Auth for S3 Buckets.
Another recommendation is to configure rultor.com for deployment of your artifacts to S3 automatically.
First, encrypt your settings.xml
with this Rultor remote:
$ gem install rultor
$ rultor encrypt -p me/test settings.xml
Instead of me/test
, you should use the name of your GitHub project.
As a result, you will get a new file named settings.xml.asc
. Add it to the root directory of your project, then commit and push. The file contains your secret information, but only the Rultor server can decrypt it.
Create a .rultor.yml
file in the root directory of your project (The Rultor reference page explains this format in greater detail):
decrypt:
settings.xml: "repo/settings.xml.asc"
deploy:
script: |
mvn clean deploy --settings ../settings.xml
Now it’s time to see how it all works together. Create a new ticket in the GitHub issue tracker and post something like this into it (read more about Rultor commands):
@rultor deploy
You will get a response in a few seconds. The rest will be done by Rultor.
That’s it.
You may also find these related posts interesting: Object-Oriented Declarative Input/Output in Cactoos; My Favorite Websites; My Work Environment; Design Patterns and Anti-Patterns, Love and Hate; How to Deploy to CloudBees, in One Click;
maven-assembly-plugin
fully.qualified.MainClass
jar-with-dependencies
Comando:
mvn clean compile assembly:single