12

Maven の設定に小さな問題があります。ここにある他のすべての質問と回答では問題が解決しなかったため、新しい質問を開始しています。

私の問題は、Maven がローカル リポジトリを使用していないことです。アーティファクトは常にリモート リポジトリから取得されます。

アーティファクトがダウンロードされるか、プロジェクトをビルドすると、ローカル リポジトリにインストールされるので、パスは正しいです。

問題は、1 つの SNAPSHOT プロジェクトをビルドすると、ローカル リポジトリにしかインストールされないことです (このようにする必要があります。毎回 nexus で公開したくありません)。以前のプロジェクトを pom.xml の依存関係として持つ別のプロジェクトをビルドすると、maven は、ローカル リポジトリから取得するのではなく、見つけられなかったネクサス サーバーからアーティファクトをダウンロードしたいと考えています。

これは私のMaven設定です:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>C:\Users\Marc\.m2\repository</localRepository>
  <interactiveMode>false</interactiveMode>
  <usePluginRegistry>false</usePluginRegistry>
  <pluginGroups>
  </pluginGroups>
  <servers>
    <server>
      <id>releases</id>
      <username>MY_USERNAME</username>
      <password>MY_PASSWORD</password>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
    </server>
    <server>
      <id>snapshots</id>
      <username>MY_USERNAME</username>
      <password>MY_PASSWORD</password>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
    </server>
    <server>
      <id>nexus</id>
      <username>MY_USERNAME</username>
      <password>MY_PASSWORD</password>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
    </server>
  </servers>
  <profiles>
    <profile>
      <id>nexussrv</id>
      <repositories>
        <repository>
          <id>snapshots</id>
          <url>http://nexus/content/repositories/snapshots</url>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </snapshots>
          <releases>
            <enabled>false</enabled>
          </releases>
        </repository>
        <repository>
          <id>releases</id>
          <url>http://nexus/content/repositories/releases</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
        <repository>
          <id>nexus</id>
          <url>http://nexus/content/groups/public</url>
        </repository>
      </repositories>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>nexussrv</activeProfile>
  </activeProfiles>
</settings>

nexus からのダウンロードと成果物 (SNAPSHOT および RELEASE) の nexus への公開は、この構成で機能しますが、ローカル リポジトリの成果物は使用しません。

ご協力いただきありがとうございます!

4

2 に答える 2

16

SNAPSHOT が常に( <updatePolicy>always</updatePolicy>) スナップショット ネクサスからダウンロードされるように構成しました。そのため、ローカル キャッシュ ( ~/.m2/repository) に新しいバージョンのスナップショットがある場合でも、maven は構成されたサーバー ( ) からそれをダウンロードしようとしますhttp://nexus/content/repositories/snapshots

スナップショット エントリの updatePolicy を変更することを検討してください。たとえば、SNAPSHOT を毎日 (朝) スナップショット ネクサスにデプロイする CI サーバーがある場合は、updatePolicy を に変更しdailyます。

于 2013-10-04T12:07:34.813 に答える
0

構成を に変更した場合 でも、ネクサスからのダウンロードが試行 され ます<updatePolicy>always</updatePolicy>。これは、ネクサス構成を無効にする必要があるためです。pom.xml
<reposotiry>pom.xmlsettings.xml

于 2020-08-28T10:40:07.463 に答える