2017-06-22 57 views
0

道歉,如果这是一个简单的办法,我是新来的Java和Maven和我在努力一点与得到它的工作。运行Maven构建与手动下载的依赖

我想实现我的工作机器上ADAL4J sample。不幸的是,由于各种安全原因,我的工作机器无法访问Maven存储库,无法暂时挂载下载和所需的软件包。

我有过的样品和运行我个人的机器上,通过生成Maven依赖的列表,并手动下载他们到我的工作机(jar文件),但是这是我卡住。

如何配置Maven构建过程中使用,而不是试图从Maven的远程回购下载这些地方的jar文件?

编辑:忘了提及,任何解决方案将与VSTS一起部署,它也无法访问Maven存储库,所以任何引用独立于Maven存储库的依赖关系的方式都必须能够与构建过程(它目前生成一个WAR文件)并部署到远程Tomcat服务器。

+0

你可以' mvn将它们安装到您当地的仓库... –

回答

1

只需手动安装jar文件到你的本地仓库:

https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

指南安装第三方JAR文件

虽然很少,但有时你会有第三方的JAR你 需要放入您的本地存储库以供您的构建使用,因为 它们不存在于任何公共存储库(如Maven Central)中。必须将JAR 放置在本地存储库中的正确位置,以便 正确地被Apache Maven正确拾取。为了使这更简单,我们在 maven-install-plugin中提供了一个目标,这应该使得这个过程相对简单。要 安装JAR的本地仓库使用以下命令:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \ 
    -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> 

如果有一个POM文件,以及,你可以用下面的 命令来安装它:

mvn install:install-file -Dfile=<path-to-file> -DpomFile=<path-to-pomfile> 

随着2.5版本的Maven-install-plugin,它变得更好。如果 广口瓶中与Apache Maven构建,它会包含在META-INF目录,该目录将被默认读取的 子文件夹一个pom.xml。在 这种情况下,所有你需要做的是:

mvn install:install-file -Dfile=<path-to-file> 
+0

对不起,意思是说这必须在没有Maven仓库的构建服务器上运行,所以任何解决方案都必须与构建的war文件一起打包。我会在这个问题上加上这一点。 –

1

您可以使用此命令为你手工下载的jar:

mvn deploy:deploy-file -Durl=file://yourPath/.m2/repository -DrepositoryId=yourRepositoryId -Dfile=pathJar/yourJar.jar -Dversion=yourVersion -DgroupId=yourGroupId -DartifactId=yourArtifactId 
+0

对不起,这意味着必须在不能访问Maven repo的构建服务器上运行,所以任何解决方案都必须与构建的war文件打包在一起。我会在这个问题上加上这一点。 –

1

你可以试试这个:

  • 对项目运行的mvn clean package,里面确实有互联网连接的计算机上。这会产生一个副作用,Maven会下载你的依赖关系并将它们放到你的本地存储库(位于.m2文件夹中的Windows用户文件夹中)。
  • 将整个.m2文件夹放在没有网络连接的机器上。

Maven总是首先检查本地回购,对于任何依赖关系,所以你应该像这样好。另外,它会为您节省安装依赖项的麻烦,就像其他答案一样。

编辑:我想补充说,如果你有很多的依赖关系,这个方法是有用的。如果你只有少数 - 比如说5 - (尽管不太可能),那么在install手动在你的本地仓库(install是在你的本地仓库中放置一个工件的过程)可能会更好,

+0

欣赏答案,但工作系统被锁定到无法将文件从具有互联网访问权限的系统传输到另一个系统,否则这将是我的首选选项(看起来存在超过25个依赖关系) –

+1

Don你是否必须转移这些依赖?(即传输文件)。如果您单独转让整个回购或罐子,有什么区别? – Andrei

+0

安全性将允许有人(而不是我)从已知和受信任的站点(如Maven回购网站)下载jar文件,然后将其病毒扫描并放入安全网络文件夹供我访问。他们不会允许那些已经连接到广泛互联网的机器进行转移,因为他们对病毒的瘫痪恐惧。我并不是说它是有道理的,但它是我不得不尝试导航才能完成工作的公司系统。 –