由于某些原因,我需要有一个本地的,没有连接到某个应用程序所有依赖项的任何副本。我有一个脚本,可以下载这些依赖项,并将它们存储在一个与本地Maven存储库(如.m2/repository
)没有什么不同的结构中。
现在,我想制作一种";伪应用程序";它根据存储库检查我的代码库,只查看那里的,而不查看其他。伪应用程序包含真实应用程序的pom.xml文件和一些Java文件,以便(除其他外)实际触发Swagger生成器。
在我的假人的父pom.xml
中,我添加了
<repositories>
<repository>
<id>central</id>
<url>http://repo1.maven.org/maven2</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>downloaded</id>
<name>Downloaded dependencies</name>
<url>file://path/to/local/repository</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://repo1.maven.org/maven2</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>downloaded</id>
<name>Downloaded dependencies</name>
<url>file://path/to/local/repository</url>
</pluginRepository>
</pluginRepositories>
这不起作用,因为本地repo是空的,并且伪应用程序构建(mvn package
)仍然成功。
我还尝试在虚拟应用程序中添加settings.xml
,但这似乎也没有任何作用:
<settings>
<localRepository>path/to/local/repository</localRepository>
</settings>
作为参考,我在Gradle做了同样的事情,效果很好:
在settings.gradle
中
pluginManagement {
repositories {
maven {
url 'path/to/local/repository'
}
}
}
和在build.gradle
中
buildscript {
repositories {
maven {
name 'local'
url "file://path/to/local/repository"
}
}
}
allprojects {
repositories {
maven {
name 'local'
url "file://path/to/local/repository"
}
}
}
那么,我如何只使用Maven来实现上面的Gradle配置呢?
您是否尝试过使用mvn -Dmaven.repo.local=<location>
,它通过命令行选项定义本地缓存的位置。