【问题标题】:Use local flat file repository instead of remote maven repository使用本地平面文件存储库而不是远程 maven 存储库
【发布时间】:2012-01-13 08:33:39
【问题描述】:

我对maven没有经验,如果这个问题很傻,请原谅......

从另一个问题 (How does Grails handle plugin dependencies),我了解到我可以通过 maven 存储库避免 grails 中的 jar-hell。但是我现在的要求是……

  • 我不允许使用远程 maven 存储库
  • 我想将所需的 jar 与我的插件捆绑在一起(但优先级较低)
  • 我想避免安装本地 maven 存储库的工作

我已经使用了对本地文件夹的引用来进行插件解析。这很好用。

但我必须如何构建本地文件夹才能使用此选项:

repositories {
  flatDir name:'myRepo', dirs:'/path/to/repo'
}

我的意思是,我可以将 jar 文件放到这个文件夹中,但是我如何引用这些 jar 文件呢?他们有像artifact_version.jar 这样的命名模式吗?还是我必须为此本地存储库创建 XML 配置?

或者使用本地 maven 存储库的工作量很小,而且通过 grails 甚至已经在我的机器上安装了 maven?

【问题讨论】:

    标签: grails maven


    【解决方案1】:

    事实上,Maven 已经带有一个本地存储库(Linux 机器上为 ~/.m2)。如果您无权访问外部存储库,则只需使用此命令将 jar 安装到本地存储库中

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

    是 'jar' (不带引号)并且 group-id 和 artifact-id 确定它是否是第 3 方库(如果您不知道特定库,请在 mvnrepository.com 上进行搜索)或你把你的组和工件ID放在那里

    编辑:事实上,存储库下的命名方案是来自 jexample.com 的库示例版本 1.2 通常是 com/jexample/example/1.2/example-1.2.jar (groupId : com.jexample, artifactId : example, version : 1.0)

    【讨论】:

    • 谢谢。听起来很好。但我的命令行无法识别mvncommand。 Grails 在引擎盖下使用 maven,所以它应该在某个地方,但我找不到它。你有什么建议吗?
    • linux 还是 windows ?你能安装一些东西吗?如果您在 linux 上,请检查您是否有 .m2 或 .ivy2 目录
    • 是的,grails 创建了一个%user%/.m2 目录。那不是问题。是的,我可以安装 maven,但我猜 grails 已经安装了它 - 但我找不到它......我会继续搜索。顺便说一句:窗户
    • grails 与 maven jars 捆绑在一起(我猜来自 Ivy 发行版),但未安装可执行文件...安装 maven 然后你就可以做你想做的事了
    • @Ralf Grails 默认不使用 Maven,它使用 Ant 和 Ivy(尽管 Ivy 可以从 Maven 存储库中读取依赖项)
    猜你喜欢
    • 2020-01-09
    • 2016-02-06
    • 1970-01-01
    • 2014-02-15
    • 2013-10-11
    • 1970-01-01
    • 2011-02-04
    • 2012-02-02
    • 1970-01-01
    相关资源
    最近更新 更多