我尝试在我的项目上工作,而在一个没有互联网连接的区域。令我惊讶的是,她在那种情况下遇到了麻烦。虽然,我应该在缓存中有我的库(考虑到我最初在线启动项目),但sbt无法解决一些依赖关系。
Sbt不能获取我的本地maven存储库,他也不能找到一些其他依赖,我认为他已经下载(即在缓存中)。
*我的问题是:如何确保当我有连接,sbt在缓存中获取库一次,所以当我没有它,它获取包括maven在内的所有本地repo。
我问这个问题是因为我对当前情况的理解(即当没有互联网连接可用时):
- sbt从maven缓存下载有问题
- sbt不能找到一些特定的依赖,由于某些原因,
例如,下面是sbt应该已经缓存的库的跟踪。
[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
缓存内容:
/用户/maatary/.ivy2/缓存/com.google.inject.extensions
extensions-parent guide - assstedinject guide -multibindings
每个文件夹中有:
ivy - 4.0 - beta4.xml ivydata beta4.properties——4.0常春藤- 4.0 - beta4.xml.original
其他最后2个文件夹包含另外:
一个jar, SRC和docs文件夹。在jar中,您可以找到取出的jar。
。
辅助注射的jar文件夹中有:
guice 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>
它的属性文件如下:
#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
参见缓存和配置。
当
offline := true
时,远程快照不会被解析更新,即使是显式请求的更新。这将有效地支持在没有连接到远程存储库的情况下工作。可复制的例子证明,否则赞赏。显然,更新必须在脱机前成功运行。
此功能可能适合您,也可能不适合您,但它旨在解决您的场景。尝试一下,如果它不工作,请在Github上提交一个问题。