Reputation: 1101
How do I download JAR during a build in Maven script?
Upvotes: 110
Views: 197000
Reputation: 3137
Or since 3.1, simply as:
mvn dependency:get -Dartifact=org.springframework:spring-instrument:3.2.3.RELEASE
This will place the JAR in the following directory:
~/.m2/repository/org/springframework/spring-instrument/3.2.3.RELEASE/
Upvotes: 72
Reputation: 105193
You can use this plugin:
<plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
<version>1.7.0</version>
<executions>
<execution>
<phase>generate-test-resources</phase>
<goals>
<goal>wget</goal>
</goals>
<configuration>
<uri>http://example.com/foo.zip</uri>
<unpack>true</unpack>
<maxLockWaitTime>100</maxLockWaitTime>
<outputDirectory>${project.build.directory}/foo</outputDirectory>
<md5>5b1f9712b75439446f2fe3d4e1339448</md5>
<checkSignature>true</checkSignature>
</configuration>
</execution>
</executions>
</plugin>
Upvotes: 0
Reputation: 441
You can use:
mvn dependency:copy \
-Dartifact=<group>:<artifact-name>:<version> \
-DoutputDirectory=/tmp/my_custom_dir
(Replace <values>
with the ones of your case)
That's the full documentation of the goal: https://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html
Note: the other "dependecy:get" way of doing this has been deprecated.
Upvotes: 31
Reputation: 23871
This works for me, but it downloads only the latest version:
#! /bin/bash
set -eu
if [[ -z ${1:-} || -z ${2:-} ]]; then
printf 'Usage: %s group artifact\n' "$(basename "$0")" >&2
exit 1
fi
g="$1"
a="$2"
url='https://search.maven.org'
v="$(curl -s "$url/solrsearch/select?q=g:$g+AND+a:$a&core=gav&rows=20&wt=json" |
jq -r '.response.docs[0].v')"
curl -s -L -o "$a-$v.jar" "$url/remotecontent?filepath=${g//.//}/$a/$v/$a-$v.jar"
You need bash
, curl
and jq
.
Example:
./maven-download net.sf.saxon Saxon-HE
Downloads Saxon-HE-11.4.jar
today (2022-12-23).
Upvotes: 1
Reputation: 93
Updated 2022 answer for command line - building on Ivan Carcamo's answer:
wget [the link that Ivan Carcamo points to in his screenshot]
Edit: This may download the thin jar for some repositories, so you may need to find a different link for the fat jar
Upvotes: 6
Reputation: 21
All the jars are available directly in the maven central repository. You don't have to use "maven" if all you want is the jar.
https://repo.maven.apache.org/maven2/
If the pom dependency is
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.2</version>
</dependency>
You can download it from the corresponding directory structure by replacing the dots with forward slashses on the group id, artifact id, and version. I would navigate to the final folder to get the exact link of the jar.
https://repo.maven.apache.org/maven2/org/apache/poi/poi/5.2.2/poi-5.2.2.jar
Upvotes: 2
Reputation: 734
This is what I do (2022 answer), go to https://mvnrepository.com/, search for your .jar and click on here:
Upvotes: 21
Reputation: 11
It's possible to download a JAR from a Gitlab Maven private repository. The URL is appearing when running some Maven command so it's a bit hacky but it's working for me.
Like this:
wget --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" "https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/packages/maven/${MAVEN_PACKAGE_NAME}/${MAVEN_VERSION}/${JAR_FILE}"
Where,
Upvotes: 1
Reputation: 1
Use the below code snip
result = subprocess.check_output('mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get \
-DgroupId=%s \
-DartifactId=%s \
-Dversion=%s \
-Dtransitive=false \
-DremoteRepositories={repos_string} \
-Dpackaging=jar \
-DoutputDirectory=%s' % (group_id,
artifact_id,
version_name,
des_path), shell=True)
logger.info("success download jar: %s" % each_version)
except Exception as e:
logger.error("Error in download jar : %s" % str(e))
Upvotes: 0
Reputation: 838
You can download Jar package to specific directory.
mvn dependency:get -Dartifact=org.riversun:random-forest-codegen:1.0.0 -Ddest=./
Upvotes: 10
Reputation: 11943
If you just want to download a JAR once from a maven mirror I suggest you could just do this manually:
For Maven 1:
http://mirrors.ibiblio.org/pub/mirrors/maven/
For Maven 2:
http://mirrors.ibiblio.org/pub/mirrors/maven2/
These are the repositories (a mirror anyway) that maven will get its JARs from - you can easily access them in the webbrowser of your choice and download the JARs etc. Just browse through the hierarchy (it looks like any Java packag hierarchy) until you find the artefact, then pick the right version and you're good.
For example version 3.6.6.Final of hibernate-core from group org.hibernate you'd find here:
http://mirrors.ibiblio.org/pub/mirrors/maven2/org/hibernate/hibernate-core/3.6.6.Final/
Upvotes: 5
Reputation: 1678
You can setup a pom.xml to define your dependencies (the jars you want to copy). Then use the dependency:copy-dependencies goal to copy the jars to the desired location.
Upvotes: 4
Reputation: 5215
Note: This answer is for downloading the jars directly from maven without any scripts
[That is how Google directed me here]
Assuming mvn
dependency is like this:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.4.7</version>
</dependency>
Goto http://search.maven.org and search for g:"com.zaxxer" AND a:"HikariCP" AND v:"2.4.7"
(simply searching for HikariCP
also works. You may need to select the appropriate GroupId
and Version
from the results)
In the Search Results -> Download
column, you should see jar javadoc.jar sources.jar
available for direct download
Upvotes: 37
Reputation: 299178
Maven does not work like that. Here's the closest you'll get to my knowledge:
mvn dependency:get -DremoteRepositories=http://repo1.maven.org/maven2/ \
-DgroupId=junit -DartifactId=junit -Dversion=4.8.2 \
-Dtransitive=false
Note that all parameters except transitive are required.
Also note that Maven will download the jar to your local repository, and there's no sensible way (that I know of) to copy it to a local directory.
Reference:
Upvotes: 90
Reputation: 6801
See How to use Maven pom to download jar files only. This worked really nicely for me.
My use case was that I wanted to download some of the dependency jars to deploy to a QA server, and was doing it manually (outside of the Maven build). I'm not sure exactly what your use case is.
Upvotes: 8
Reputation: 15525
Normally you don't use Maven for "just downloading", but for your build process. So normally, you do the following steps:
mvn compile
As a side effect, you will have downloaded the library to your local Maven repository. There are a lot of plugins to do something with dependencies, so have e.g. a look at the Maven Dependency plugin.
Upvotes: 6