Почему IvyDE может использовать источник для библиотеки scala, а не источник для scalaz-core_2.10.0-RC3-7.0.0-M5?
Я использую IvyDE с Eclipse Indigo. У меня есть файл ivy.xml, который выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="com.restphone" module="javasignatureparser_2.10" revision="0.3-SNAPSHOT" status="integration" publication="20121208180225">
<description>
JavaSignatureParser
</description>
</info>
<configurations>
<conf name="compile" visibility="public" description=""/>
<conf name="runtime" visibility="public" description="" extends="compile"/>
<conf name="test" visibility="public" description="" extends="runtime"/>
<conf name="provided" visibility="public" description=""/>
<conf name="optional" visibility="public" description=""/>
<conf name="sources" visibility="public" description=""/>
<conf name="docs" visibility="public" description=""/>
<conf name="pom" visibility="public" description=""/>
</configurations>
<dependencies defaultconfmapping="*->default,sources" >
<dependency org="org.scalaz" name="scalaz-core_2.10.0-RC3" rev="7.0.0-M5" conf="compile->default(compile);sources->default(compile)"/>
</dependencies>
</ivy-module>
Контейнер IvyIDE имеет исходное вложение для библиотеки scala (транзитивная зависимость, не указанная в коде ivy.xml), но не имеет исходного вложения для скалярного ядра.
Если я загляну в локальный кеш плюща (где у контейнера есть файлы), я увижу:
C:\Users\james\.ivy2\cache\org.scalaz\scalaz-core_2.10.0-RC3
bundles
scalaz-core_2.10.0-RC3-7.0.0-M5.jar
sources
scalaz-core_2.10.0-RC3-7.0.0-M5-sources.jar
Любая идея, почему IvyIDE не может понять, как использовать scalaz-core_2.10.0-RC3-7.0.0-M5-sources.jar?
В /cygdrive/C/Users/james/.ivy2/cache/org.scalaz/scalaz-core_2.10.0-RC3/ivy-7.0.0-M5.xml есть файл конфигурации ivy, в котором говорится, что тип артефакта "связка" - это связано?
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven">
<info organisation="org.scalaz"
module="scalaz-core_2.10.0-RC3"
revision="7.0.0-M5"
status="release"
publication="20121123051347"
>
<license name="BSD-style" url="http://www.opensource.org/licenses/bsd-license.php" />
<description homepage="http://scalaz.org">
scalaz-core
</description>
</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 repository."/>
<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="scalaz-core_2.10.0-RC3" type="bundle" ext="jar" conf="master"/>
</publications>
<dependencies>
<dependency org="org.scala-lang" name="scala-library" rev="2.10.0-RC3" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>
</dependencies>
</ivy-module>
Обновление: все стало немного страннее. Если я удаляю этот файл scalaz-core_2.10.0-RC3 / ivy-7.0.0-M5.xml, затем изменяю строку в ivy.xml, этот файл загружается снова - И НЕ ТО ЖЕ. Иногда я получаю больше строк в файле! Как это:
<publications>
<artifact name="scalaz-core_2.10.0-RC3" type="bundle" ext="jar" conf="master"/>
<artifact name="scalaz-core_2.10.0-RC3" type="source" ext="jar" conf="sources" m:classifier="sources"/>
<artifact name="scalaz-core_2.10.0-RC3" type="javadoc" ext="jar" conf="javadoc" m:classifier="javadoc"/>
</publications>
1 ответ
Тип связан, IvyDE определяет, существуют ли источники, используя "тип источников".
В разделе "Типы источников" на вкладке "Источник /Javadoc" в управляемой библиотеке IvyDE. По умолчанию это "источник".
То, что вы показываете в ivy.xml разрешенных артефактов, показывает, что тип является комплектом, который не будет считаться исходным артефактом.
Однако я попытался решить проблему с конфигурацией по умолчанию (я только что установил Eclipse и IvyDE в пустой проект) и с разрешенным файлом ivy для scalaz-core:
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven">
<info organisation="org.scalaz"
module="scalaz-core_2.10.0-RC3"
revision="7.0.0-M5"
status="release"
publication="20121123141347"
>
<license name="BSD-style" url="http://www.opensource.org/licenses/bsd-license.php" />
<description homepage="http://scalaz.org">
scalaz-core
</description>
</info>
<publications>
<artifact name="scalaz-core_2.10.0-RC3" type="bundle" ext="jar" conf="master"/>
<artifact name="scalaz-core_2.10.0-RC3" type="source" ext="jar" conf="sources" m:classifier="sources"/>
<artifact name="scalaz-core_2.10.0-RC3" type="javadoc" ext="jar" conf="javadoc" m:classifier="javadoc"/>
</publications>
<dependencies>
<dependency org="org.scala-lang" name="scala-library" rev="2.10.0-RC3" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>
</dependencies>
Я удалил раздел конфигурации для ясности.
Вы уверены, что загружаете из репозитория maven2:
http://repo1.maven.org/maven2/
Возможно они изменили это за прошлые 10 часов.
Я бы попробовал добавить связку с "типами источников" на вашем месте. Не уверен насчет разветвления.