如何在 Maven 脚本构建期间下载 JAR?
通常情况下,Maven 不是用于“只是下载”,而是用于构建过程:
mvn compile
作为一个副作用,您已经将库下载到了本地 Maven 存储库中。有很多插件可以做一些依赖性的事情,所以看看 Maven Dependency 插件。
Maven 不是这样工作的,以下是我所知道的最接近的情况:
mvn dependency:get -DremoteRepositories=http://repo1.maven.org/maven2/ \ -DgroupId=junit -DartifactId=junit -Dversion=4.8.2 \ -Dtransitive=false
请注意,除了传递参数之外的所有参数都是必需的。 还要注意的是,Maven 将把 jar 下载到本地存储库,并且没有合理的方法(据我所知)将其复制到本地目录。
参考文献:
dependency:get
如果你只是想从 Maven 镜像下载一次 JAR,我建议你可以手动完成:
对于 Maven 1: Http://mirrors.ibiblio.org/pub/mirrors/maven/
对于美芬2: Http://mirrors.ibiblio.org/pub/mirrors/maven2/
这些是存储库(至少是一个镜像) ,Maven 可以从中获得 JAR ——你可以轻松地在你选择的网络浏览器中访问它们并下载 JAR 等等。只需浏览层次结构(它看起来像任何 Java 包层次结构) ,直到找到工件,然后选择正确的版本,就可以了。
例如 休眠核心的 或者冬眠组的 3.6.6最后一次版本,你可以在这里找到:
Http://mirrors.ibiblio.org/pub/mirrors/maven2/org/hibernate/hibernate-core/3.6.6.final/
或者从3.1开始 mvn dependency:get -Dartifact=org.springframework:spring-instrument:3.2.3.RELEASE
mvn dependency:get -Dartifact=org.springframework:spring-instrument:3.2.3.RELEASE
看看 如何使用 Mavenpom 只下载 jar 文件。这对我来说真的很有用。
我的用例是,我想下载一些依赖项 jar 来部署到 QA 服务器,并且是手动完成的(在 Maven 构建之外)。我不确定你的用例到底是什么。
注意: 这个答案是针对 downloading the jars directly from maven without any scripts的(这就是 Google 引导我来到这里的原因)
downloading the jars directly from maven without any scripts
假设 mvn依赖性是这样的:
mvn
<dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>2.4.7</version> </dependency>
前往 http://search.maven.org和搜索 g:"com.zaxxer" AND a:"HikariCP" AND v:"2.4.7"(简单地搜索 HikariCP也可以工作。您可能需要从结果中选择适当的 GroupId和 Version)
g:"com.zaxxer" AND a:"HikariCP" AND v:"2.4.7"
HikariCP
GroupId
Version
在 Search Results -> Download专栏中,您应该看到可以直接下载的 jar javadoc.jar sources.jar
Search Results -> Download
jar javadoc.jar sources.jar
您可以设置 pom.xml 来定义您的依赖项(您想要复制的 jar)。然后使用 从属关系: 拷贝-从属关系目标将罐子复制到所需的位置。
您可以将 Jar 包下载到特定目录。
mvn dependency:get -Dartifact=org.riversun:random-forest-codegen:1.0.0 -Ddest=./
使用下面的代码段
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))
可以从 Gitlab Maven 私有存储库下载 JAR。当运行一些 Maven 命令时,URL 会显示出来,所以它有点生硬,但对我来说很有用。
像这样:
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}"
在哪里,
你可使用:
mvn dependency:copy -Dartifact=<group>:<artifact-name>:<version> -DoutputDirectory=/tmp/my_custom_dir
(将 <values>替换为案例中的 <values>)
<values>
这是目标 https://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html的完整文档
注意: 另一种“依赖: 获取”的方式已经被废弃了。
这就是我所做的(2022年的答案) ,进入 https://mvnrepository.com/,搜索你的.jar,然后点击这里:
所有的 jar 都可以直接在 Maven 中央存储库中获得。如果你想要的只是罐子,你就不用用“ maven”了。
Https://repo.maven.apache.org/maven2/
如果 pom 依赖项是
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.2.2</version> </dependency>
您可以从相应的目录结构下载它,方法是在组 id、工件 id 和版本上用正斜杠替换点。我将导航到最终的文件夹,以获得确切的链接的罐子。
Https://repo.maven.apache.org/maven2/org/apache/poi/poi/5.2.2/poi-5.2.2.jar
更新了2022年 Ivan Carcamo命令行构建的答案:
wget [the link that Ivan Carcamo points to in his screenshot]
编辑: 这可能会下载一些存储库的瘦 jar,因此您可能需要为胖 jar 找到一个不同的链接
截至2022年12月12日,下载所有依赖项(包括 jar 文件本身)的最简单方法是访问以下链接:
Https://jar-download.com/online-maven-download-tool.php
然后简单地把 Maven 的 XML 粘贴到页面上,点击下载,上帝保佑那个开发 jar-download.com 的人