如何设置sbt,以便在线时抓取所有必要的依赖项,让我离线工作呢?

Maa*_*mon 6 sbt

我尝试在没有互联网连接区域的情况下处理我的项目.令我惊讶的是,在这种情况下,sbt遇到了麻烦.虽然,我应该将我的库放在缓存中(鉴于我最初在线启动项目),sbt无法解决某些依赖关系.

Sbt无法获取我的本地maven存储库,也无法找到我认为已经下载的其他依赖项(即在缓存中).

*

我的问题是:如何确保当我有连接时,sbt获取缓存ONCE中的libs,这样当我没有它时,它会获取我的所有本地仓库,包括maven.

我问这个是因为我对当前情况的理解(即没有互联网连接时):

  1. sbt从maven缓存下载时遇到问题
  2. sbt可以找到我在ivy local中的大多数依赖
  3. sbt找不到某些特定的依赖,由于某些原因,显然没有缓存.

例如,这里有sbt应该已经缓存的一些libs.

[warn]   file:///Users/maatary/.m2/repository/com/google/inject/extensions/guice-assistedinject/4.0-beta4/guice-assistedinject-4.0-beta4.pom
[info] Resolving com.google.inject.extensions#guice-multibindings;4.0-beta4 ...
**[warn] Host repo1.maven.org not found.** url=http://repo1.maven.org/maven2/com/google/inject/extensions/guice-multibindings/4.0-beta4/guice-multibindings-4.0-beta4.pom
**[info] You probably access the destination server through a proxy server that is not well configured.**
[warn]  module not found: com.google.inject.extensions#guice-multibindings;4.0-beta4
**[warn] ==== local: tried
[warn]   /Users/maatary/.ivy2/local/com.google.inject.extensions/guice-multibindings/4.0-beta4/ivys/ivy.xml**
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/com/google/inject/extensions/guice-multibindings/4.0-beta4/guice-multibindings-4.0-beta4.pom
[warn] ==== Local Maven Repository: tried
[warn]   file:///Users/maatary/.m2/repository/com/google/inject/extensions/guice-multibindings/4.0-beta4/guice-multibindings-4.0-beta4.pom
[info] Resolving jline#jline;2.12 ...                                          
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.google.inject.extensions#guice-assistedinject;4.0-beta4: not found
[warn]  :: com.google.inject.extensions#guice-multibindings;4.0-beta4: not found
Run Code Online (Sandbox Code Playgroud)

这是缓存内容:

/Users/maatary/.ivy2/cache/com.google.inject.extensions

extensions-parent guice-assistedinject guice-multibindings

您在每个文件夹中的位置:

ivy-4.0-beta4.xml ivydata-4.0-beta4.properties ivy-4.0-beta4.xml.original

其他最后2个文件夹另外包含:

一个罐子,src和docs文件夹.在罐子里,你会发现罐子被拿走了.

例如

在辅助注射的jars文件夹中,您有:

吉斯 - assistedinject-4.0-beta4.jar

它的ivy.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven">
        <info organisation="com.google.inject.extensions"
                module="guice-assistedinject"
                revision="4.0-beta4"
                status="release"
                publication="20140320225220"
        >
                <description homepage="" />
                <m:properties__guice.with.no_aop>true</m:properties__guice.with.no_aop>
                <m:properties__gpg.skip>true</m:properties__gpg.skip>
                <m:properties__project.build.sourceEncoding>UTF-8</m:properties__project.build.sourceEncoding>
                <m:properties__guice.api.version>1.4</m:properties__guice.api.version>
                <e:sbtTransformHash>7174be3135c2a95a21c158fb6beb5a9621b5b898</e:sbtTransformHash>
                <m:properties__guice.with.jarjar>true</m:properties__guice.with.jarjar>
                <m:maven.plugins>null__maven-gpg-plugin__1.4|null__maven-gpg-plugin__1.4|null__maven-remote-resources-plugin__null|org.codehaus.mojo__animal-sniffer-maven-plugin__null|org.apache.felix__maven-bundle-plugin__null|null__mav\
en-source-plugin__null|null__maven-javadoc-plugin__null|null__maven-gpg-plugin__1.4|null__maven-gpg-plugin__1.4|null__maven-remote-resources-plugin__null|org.codehaus.mojo__animal-sniffer-maven-plugin__null|org.apache.felix__maven-bundle\
-plugin__null|null__maven-source-plugin__null|null__maven-javadoc-plugin__null</m:maven.plugins>
        </info>
        <configurations>
                <conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf" extends="runtime,master"/>
                <conf name="master" visibility="public" description="contains only the artifact published by this module itself, with no transitive dependencies"/>
                <conf name="compile" visibility="public" description="this is the default scope, used if none is specified. Compile dependencies are available in all classpaths."/>
                <conf name="provided" visibility="public" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/>
                <conf name="runtime" visibility="public" description="this scope indicates that the dependency is not required for compilation, but is for execution. It is in the runtime and test classpaths, but not the compile classpath\
." extends="compile"/>
                <conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases." extends\
="runtime"/>
                <conf name="system" visibility="public" description="this scope is similar to provided except that you have to provide the JAR which contains it explicitly. The artifact is always available and is not looked up in a repos\
itory."/>
                <conf name="sources" visibility="public" description="this configuration contains the source artifact of this module, if any."/>
                <conf name="javadoc" visibility="public" description="this configuration contains the javadoc artifact of this module, if any."/>
                <conf name="optional" visibility="public" description="contains all optional dependencies"/>
        </configurations>
        <publications>
                <artifact name="guice-assistedinject" type="jar" ext="jar" conf="master"/>
        </publications>
        <dependencies>
                <dependency org="com.google.inject" name="guice" rev="4.0-beta4" force="true" conf="compile->compile(*),master(*);runtime->runtime(*);test->runtime(*),master(*)">
                        <artifact name="guice" type="jar" ext="jar" conf="compile,runtime"/>
                        <artifact name="guice" type="jar" ext="jar" conf="test" m:classifier="tests"/>
                </dependency>
                <dependency org="cglib" name="cglib" rev="3.1" force="true" conf="test->runtime(*),master(*)">
                        <exclude org="asm" module="asm" name="*" type="*" ext="*" matcher="exact"/>
                </dependency>
                <dependency org="org.ow2.asm" name="asm" rev="5.0" force="true" conf="test->runtime(*),master(*)"/>
                <dependency org="junit" name="junit" rev="4.11" force="true" conf="test->runtime(*),master(*)"/>
        </dependencies>
</ivy-module>
Run Code Online (Sandbox Code Playgroud)

其属性文件如下:

#ivy cached data file for com.google.inject.extensions#guice-assistedinject;4.0-beta4                                                                                                                                                         
#Sun Aug 17 20:44:39 CEST 2014                                                                                                                                                                                                                
artifact\:guice-assistedinject\#src\#jar\#1257084071.is-local=false
artifact\:ivy\#ivy\#xml\#-1879642188.exists=true
artifact\:guice-assistedinject\#src\#jar\#1257084071.exists=true
artifact\:ivy\#ivy\#xml\#-1879642188.location=http\://repo1.maven.org/maven2/com/google/inject/extensions/guice-assistedinject/4.0-beta4/guice-assistedinject-4.0-beta4.pom                                                                   
artifact\:guice-assistedinject\#pom.original\#pom\#1062568006.is-local=false
artifact\:guice-assistedinject\#jar\#jar\#-589994656.is-local=false
artifact\:guice-assistedinject\#pom.original\#pom\#1062568006.location=http\://repo1.maven.org/maven2/com/google/inject/extensions/guice-assistedinject/4.0-beta4/guice-assistedinject-4.0-beta4.pom                                          
artifact\:guice-assistedinject\#jar\#jar\#-589994656.location=http\://repo1.maven.org/maven2/com/google/inject/extensions/guice-assistedinject/4.0-beta4/guice-assistedinject-4.0-beta4.jar                                                   
artifact\:guice-assistedinject\#doc\#jar\#-1786980107.location=http\://repo1.maven.org/maven2/com/google/inject/extensions/guice-assistedinject/4.0-beta4/guice-assistedinject-4.0-beta4-javadoc.jar                                          
artifact\:guice-assistedinject\#pom.original\#pom\#1062568006.exists=true
artifact\:guice-assistedinject\#doc\#jar\#-1786980107.exists=true
artifact\:ivy\#ivy\#xml\#-1879642188.is-local=false
artifact\:guice-assistedinject\#doc\#jar\#-1786980107.is-local=false
artifact\:guice-assistedinject\#src\#jar\#1257084071.location=http\://repo1.maven.org/maven2/com/google/inject/extensions/guice-assistedinject/4.0-beta4/guice-assistedinject-4.0-beta4-sources.jar                                           
artifact\:guice-assistedinject\#jar\#jar\#-589994656.exists=true
Run Code Online (Sandbox Code Playgroud)

Eug*_*ota 2

请参阅缓存和配置

当 时offline := true,远程快照将不会通过解决方案进行更新,即使是明确请求的更新也是如此。这应该可以有效地支持在没有连接到远程存储库的情况下进行工作。赞赏以其他方式证明的可重复示例。显然,更新必须在离线之前成功运行。

此功能可能适合您,也可能不适合您,但它旨在解决您的情况。尝试一下,如果不起作用,请在 Github 上提交问题。