Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Locked History Actions

ivy/NoPom

pom.xmlが無視される

Ivyでは多くの場合、依存をmaven2リポジトリ上から取得してくるが、そのpom.xmlはIvyの形式(ivy.xml)に自動変換されてivyキャッシュに格納される。例えば、プロジェクト中でguice-2.0への依存を宣言すると、ivyはmaven2リポジトリからそれを取得し、以「${user.home}/.ivy2/cache/com.google.inject/guice」に以下を作成する。

  • ivy-2.0.xml.original ... オリジナルのguiceのpom.xmlファイル
  • ivy-2.0.xml ... 上をivy.xmlに自動変換したもの。
  • jars ... guice-2.0のjarファイルを格納するフォルダ
  • ivydata-2.0.properties ... 今のところ用途不明

ivy-2.0.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"
                module="guice"
                revision="2.0"
                status="release"
                publication="20090801212549"
        >
                <description homepage="" />
                <m:dependency.management__com.google.inject__guice__version>2.0</m:dependency.management__com.google.inject__guice__version>
                <m:dependency.management__aopalliance__aopalliance__version>1.0</m:dependency.management__aopalliance__aopalliance__version>
        </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="guice" type="jar" ext="jar" conf="master"/>
        </publications>
        <dependencies>
                <dependency org="aopalliance" name="aopalliance" rev="1.0" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>
                <override org="com.google.inject" module="guice" matcher="exact" rev="2.0"/>
                <override org="aopalliance" module="aopalliance" matcher="exact" rev="1.0"/>
        </dependencies>
</ivy-module>

このように、dependencies部分に正しくaopallianceへの依存が記述されている。 これがうまくいかない場合がある。アーティファクトのjarは取得できるものの、pom.xmlが取得できないため、ivyはこのアーティファクトについては勝手にデフォルトのivy.xmlを作成してしまい、そのアーティファクトの依存(現在のプロジェクトから見ると推移的依存)が抜け落ちてしまうことがある。

<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0">
        <info organisation="xxxx"
                module="xxxx"
                revision="0.1.3"
                status="release"
                publication="20100922230141"
                default="true"
        />
        <configurations>
                <conf name="default" visibility="public"/>
        </configurations>
        <publications>
                <artifact name="xxxx" type="jar" ext="jar" conf="default"/>
        </publications>
</ivy-module>

このケースはivysettings.xmlのリゾルバ指定の問題と思われる。このときの、ivyの出力を観察してみると ivy/IvyDE/consoleの訳注のやり方でチェック)、以下のような出力が見られる。

[ivy:resolve] loadData of clog#clog;0.1.3 of rootConf=compile
[ivy:resolve]   using chainedResolvers to resolve clog#clog;0.1.3
[ivy:resolve] chainedResolvers: Checking cache for: dependency: clog#clog;0.1.3 {compile=[compile(*), master(*)], runtime=[runtime(*)]}
[ivy:resolve]   no ivy file in cache for clog#clog;0.1.3: tried C:\Users\admin\.ivy2\cache\clog\clog\ivy-0.1.3.xml
[ivy:resolve]   no ivy file in cache for clog#clog;0.1.3: tried C:\Users\admin\.ivy2\cache\clog\clog\ivy-0.1.3.xml
[ivy:resolve]    trying file:C:\Users\admin/.m2/repository/clog/clog/0.1.3/clog-0.1.3.pom
[ivy:resolve]           tried file:C:\Users\admin/.m2/repository/clog/clog/0.1.3/clog-0.1.3.pom
[ivy:resolve]   local: resource not reachable for clog#clog;0.1.3: res=file:C:/Users/admin/.m2/repository/clog/clog/0.1.3/clog-0.1.3.pom
[ivy:resolve]    trying file:C:\Users\admin/.m2/repository/clog/clog/0.1.3/clog-0.1.3.jar
[ivy:resolve]           tried file:C:\Users\admin/.m2/repository/clog/clog/0.1.3/clog-0.1.3.jar
[ivy:resolve]   local: resource not reachable for clog#clog;0.1.3: res=file:C:/Users/admin/.m2/repository/clog/clog/0.1.3/clog-0.1.3.jar
[ivy:resolve]   local: no ivy file nor artifact found for clog#clog;0.1.3
[ivy:resolve]   no ivy file in cache for clog#clog;0.1.3: tried C:\Users\admin\.ivy2\cache\clog\clog\ivy-0.1.3.xml
[ivy:resolve]    trying http://repo1.maven.org/maven2/clog/clog/0.1.3/clog-0.1.3.pom
[ivy:resolve]           tried http://repo1.maven.org/maven2/clog/clog/0.1.3/clog-0.1.3.pom
[ivy:resolve] HTTP response status: 404 url=http://repo1.maven.org/maven2/clog/clog/0.1.3/clog-0.1.3.pom
[ivy:resolve] CLIENT ERROR: Not Found url=http://repo1.maven.org/maven2/clog/clog/0.1.3/clog-0.1.3.pom
[ivy:resolve]   ibiblio: resource not reachable for clog#clog;0.1.3: res=http://repo1.maven.org/maven2/clog/clog/0.1.3/clog-0.1.3.pom
[ivy:resolve]    trying http://repo1.maven.org/maven2/clog/clog/0.1.3/clog-0.1.3.jar
[ivy:resolve]           tried http://repo1.maven.org/maven2/clog/clog/0.1.3/clog-0.1.3.jar
[ivy:resolve] HTTP response status: 404 url=http://repo1.maven.org/maven2/clog/clog/0.1.3/clog-0.1.3.jar
[ivy:resolve] CLIENT ERROR: Not Found url=http://repo1.maven.org/maven2/clog/clog/0.1.3/clog-0.1.3.jar
[ivy:resolve]   ibiblio: resource not reachable for clog#clog;0.1.3: res=http://repo1.maven.org/maven2/clog/clog/0.1.3/clog-0.1.3.jar
[ivy:resolve]   ibiblio: no ivy file nor artifact found for clog#clog;0.1.3
[ivy:resolve]   no ivy file in cache for clog#clog;0.1.3: tried C:\Users\admin\.ivy2\cache\clog\clog\ivy-0.1.3.xml
[ivy:resolve]    trying http://10.8.0.1:8001/maven2/clog/clog/0.1.3/clog-0.1.3.jar
[ivy:resolve]           tried http://10.8.0.1:8001/maven2/clog/clog/0.1.3/clog-0.1.3.jar
[ivy:resolve]   internal: no ivy file found for clog#clog;0.1.3: using default data

最後の「no ivy file found for clog#clog;0.1.3: using default data」がこの状態を示している。