26

3 つの異なるライブラリで構成されるプロジェクトがあります。インストールスクリプトを実行すると、リポジトリからすべてのライブラリが取得され、それらに対して mvn clean install が実行されます。ただし、このバージョンのライブラリは既にリポジトリにインストールされています。pom.xml のバージョンがローカル リポジトリのバージョンと等しい場合、インストール フェーズをスキップする方法はありますか。

ローカル リポジトリを使用して、依存関係を設定するだけでよいことはわかっています。しかし、私の上司は、私たちのプロジェクトが公開リポジトリでのみビルドでき、リポジトリなしでビルドできることを望んでいます。

4

6 に答える 6

41

あなたはこのようにバイパスすることができます

-Dmaven.install.skip=true

<profiles>
   <profile>
     <id>skipInstall</id>
     <activation>
       <property>
         <name>maven.install.skip</name>
         <value>true</value>
       </property>
     </activation>
     <build>
       <pluginManagement>
         <plugins>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-install-plugin</artifactId>
             <executions>
               <execution>
                 <id>default-install</id>
                 <phase>none</phase>
               </execution>
             </executions>
           </plugin>
         </plugins>
       </pluginManagement>
     </build>
   </profile>

先週、OlivierLamyがこのjiraにパッチを適用しました。

MINSTALL-73

于 2012-02-15T08:58:02.153 に答える
10

ほとんどの Maven プラグインは、次のように指定することでスキップできます。

        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>X.Y</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>

ビルド プロファイルを設定してプロパティを設定し、それを使用して値を決定することもできます。たとえば、コマンド mvn -Pexample を実行すると、「example」プロファイルが選択されます。POM には次のものが含まれます。

...
  <properties>
    <skip.install>false</skip.install>
...
  </properties>

...
    <profile>
      <id>example</id>
      <properties>
        <skip.install>false</skip.install>
      </properties>
    </profile>
...
    <plugin>
      <artifactId>maven-install-plugin</artifactId>
      <version>X.Y</version>
      <configuration>
        <skip>${skip.install}</skip>
      </configuration>
    </plugin>
...

これらの POM の追加を使用すると、インストール プラグインのデフォルトの動作はデフォルトの目標を実行することになりますが、サンプル プロファイルが選択されている場合、インストール プラグインはその目標をスキップします。

于 2010-12-09T07:23:01.363 に答える
1

ローカル リポジトリを使用して、依存関係を設定するだけでよいことはわかっています。しかし、私の上司は、私たちのプロジェクトが公開リポジトリでのみビルドでき、リポジトリなしでビルドできることを望んでいます。

上司の言っていることを正しく理解していると思いますか? 上記を「サードパーティのライブラリをローカル リポジトリにインストールしないでください。パブリック リポジトリで利用可能なライブラリのみを使用してください」と解釈します。これは、基本的に不可能な「ローカルリポジトリを使用しない」とは異なります。これは、maven の動作ではありません。この点を明確にしようと思います。

それとは別に、非常に紛らわしい質問はありません(どのレポについて話しているのですか?インストールスクリプトは何をしているのですか?なぜライブラリでクリーンインストールと呼ぶのですか?など)。

于 2010-06-30T14:11:03.240 に答える