12

最近、Artifactory との連携を開始しました。Artifactory が提案したように、settings.xml を構成しました。ただし、「mvn compile」の実行中に jar ファイルが Artifactory リポジトリに表示されたとしても、それらをダウンロードする際に問題が発生します。repo1-cache を明示的に追加するとコンパイルの問題は解決しますが、ダウンロードは Artifactory からではなくリモート リポジトリから実行されます。

<repository>
    <id>My Repository</id>
    <name>MyRepository-releases</name>
    <url>http://mvn-srv:8081/artifactory/repo1</url>
</repository>

リモートサーバーに毎回アクセスするのではなく、自動的に依存関係を解決してアーティファクトリからフェッチするには、settings.xml に何を追加する必要がありますか?

settings.xml:

<?xml version="1.0" encoding="UTF-8"?>
<settings
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"
xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<profiles>
    <profile>
        <repositories>
            <repository>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
                <id>central</id>
                <name>libs-release</name>
                <url>http://mvn-srv:8081/artifactory/libs-release</url>
            </repository>
            <repository>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <id>snapshots</id>
                <name>libs-snapshot</name>
                <url>http://mvn-srv:8081/artifactory/libs-snapshot</url>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
                <id>central</id>
                <name>plugins-release</name>
                <url>http://mvn-srv:8081/artifactory/plugins-release</url>
            </pluginRepository>
            <pluginRepository>
                <snapshots />
                <id>snapshots</id>
                <name>plugins-snapshot</name>
                <url>http://mvn-srv:8081/artifactory/plugins-snapshot</url>
            </pluginRepository>
        </pluginRepositories>
        <id>artifactory</id>
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>artifactory</activeProfile>
</activeProfiles>
<servers>
    <server>
        <id>MyRepository</id>
    </server>
</servers>

コンパイル エラー:

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.355s
[INFO] Finished at: Wed Nov 14 14:52:31 IST 2012
[INFO] Final Memory: 4M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project common: Could not resolve dependencies for project com.myc
ompany.app:common:jar:1.0-SNAPSHOT: The following artifacts could not be resolved: commons-jxpath:co
mmons-jxpath:jar:1.3-osgi, xpp3:xpp3_min:jar:1.1.3.4.O-osgi, net.java.dev.stax-utils:stax-utils:jar:
20080702-osgi, net.sf.saxon:saxon:jar:8.9.0.4-osgi, net.sf.saxon:saxon-dom:jar:8.9.0.4-osgi, net.sf.
saxon:saxon-xqj:jar:8.9.0.4, dom4j:dom4j:jar:1.6.1-osgi, mx4j:mx4j-jmx:jar:2.1.1-osgi, mx4j:mx4j-imp
l:jar:2.1.1-osgi, mx4j:mx4j-tools:jar:2.1.1-osgi, mx4j:mx4j-remote:jar:2.1.1-osgi, com.yourkit:yjp-c
ontroller-api-redist:jar:9.0.8, org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1-osgi, common
s-codec:commons-codec:jar:1.3-osgi, commons-httpclient:commons-httpclient:jar:3.1-osgi, quartz:quart
z-all:jar:1.6.6: Could not find artifact commons-jxpath:commons-jxpath:jar:1.3-osgi in central (http
://mvn-srv:8081/artifactory/libs-release) -> [Help 1]
4

2 に答える 2

8

@ duncan-jonesの優れた回答に追加すると、解決をトラブルシューティングするための優れた方法は、Trace Artifact Retrieval呼び出しを実行することです。

http://mvn-srv:8081/artifactory/libs-release/commons-jxpath/commons-jxpath/1.3-osgi/commons-jxpath-1.3-osgi.jar?trace

ところで、repo1に 1.3-osgi バージョンさえ表示されません。

于 2012-11-14T14:52:04.643 に答える
7

仮想リポジトリが期待する実際のリポジトリにマップされていることを確認する必要があります。

たとえば、libs-releaseは通常、内部リリースリポジトリと外部リリースリポジトリの両方にマップされます。おそらく、これは正しく構成されていないため、必要なリポジトリにヒットしません。

Artifactoryで、[管理]ページに移動し、[構成]>[リポジトリ]を確認します。ページの下部で、仮想リポジトリを確認してください。それらをダブルクリックすると、何が含まれているかが表示されます。

私にとっては、、、を含みlibs-releaseます。後者は、私のインストールにリストされているすべての外部リポジトリにマップする別の仮想リポジトリです。たとえば、codehaus、repo1、jboss、google-code、...libs-release-localext-release-localremote-repos

おそらく、これらの仮想リポジトリの1つが欠落していrepo1ますか?

于 2012-11-14T14:09:59.893 に答える