ローカルjarファイルをMavenプロジェクトに追加する方法


1171

プロジェクトのライブラリソースにローカルjarファイル(まだMavenリポジトリの一部ではない)を直接追加するにはどうすればよいですか?


1
こんにちは@Praneel PIDIKITI、承認された回答を最も投票数の多い回答に変更していただけますか?
null

1
すべてのソリューションは欠点が持っているように、よりよい解決策ではありません@nslntmnx stackoverflow.com/questions/364114/...
ポールVerest

libsが時々更新または拡張される場合は、「pomified」の方法でlibsプロジェクトフォルダーからすべてのJARをmavenロードし、追加のrepoフォルダーと面倒なcmd行またはスクリプトを回避したいというこの回答を参照してください。install-file
GeroldBroserがモニカを2018

回答:


698

次のように、JARをローカルのMavenリポジトリにインストールします。

mvn install:install-file \
   -Dfile=<path-to-file> \
   -DgroupId=<group-id> \
   -DartifactId=<artifact-id> \
   -Dversion=<version> \
   -Dpackaging=<packaging> \
   -DgeneratePom=true

それぞれの意味は次のとおりです。

<path-to-file>:ロードするファイルへのパス、例→ c:\kaptcha-2.3.jar

<group-id>:ファイルが登録されるグループ→など。 com.google.code

<artifact-id>:ファイルのアーティファクト名。例→ kaptcha

<version>:ファイルのバージョン例→ 2.3

<packaging>:ファイルのパッケージ化例→ jar

参照


7
私のビルドにインストールする手順には、generatePomパーツ以外のすべてが含まれていました。それは重要なようです。
Jason D

4
<ファイルへのパス>どういう意味ですか?C:/Users/XXX/WorkspaceDocx/maven/src/main/resources/myJar.jar ......のように、または$ {project.basedir} /src/main/resources/myJar.jarを実行できます
Igor

17
答えはREADMEについては触れていません。ただし、プロジェクトがjarをもたらす場合は、ここに記載されているようにプロジェクトにリポジトリを配置することもできます。stackoverflow.com/ a / 36602256/1000011 場合、プロジェクトはjarのように機能するため、READMEは必要ありません。追加の手動ステップなしでMaven Centralにありました。
2016年

8
@opticyclicあなたのコメントにはもっと投票が必要です、またはこの回答を編集する必要があります。これは、ローカルのMavenリポジトリーにインストールしても他の人には含まれないことを知らない初心者にとって、災害のレシピです。
マイクS


1430

次のように、ローカルの依存関係を直接追加できます(固有ライブラリを含むビルドmavenプロジェクトで説明されているよう)。

<dependency>
    <groupId>com.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/Name_Your_JAR.jar</systemPath>
</dependency>

更新

新しいリリースでは、この機能は非推奨とマークされていますが、まだ機能しており、まだ削除されていません(Mavenの起動時にログに警告が表示されるだけです)。このhttps://issues.apache.org/jira/browse/MNG-6523についてmavenグループで問題が発生しています(参加して、この機能が役立つ場合がある理由を説明できます)。この機能が残っていることを願っています!

機能が削除されない限り、私に質問があれば、これを使用して、リポジトリーに適合しないプロジェクト内の1つのいたずらなjarファイルのみに依存します。この機能が削除された場合、まあ、私は後でここから選ぶことができる良い答えがたくさんあります!


49
たとえば、古いjarファイルを具体的にテストしたい場合がありますが、この答えはそれに適していると思います。それは私が必要としたものです。賛成
John Lockwood

36
見た目と同じくらい簡単で、このソリューションにはyourJar.jarがアプリのWARファイルに含まれないという問題があります。
Matthias

40
上記のソリューションはもう機能しません。「xx.jarの 'dependencies.dependency.systemPath'はプロジェクトディレクトリ内のファイルを指すべきではありません」これはすでにstackoverflow.com/questions/10935135/…で
sarah .ferguson

8
この回答では、ありませんartifactIdし、groupId周りの間違った方法?
theonlygusti 2017年

5
Maven documaven.apache.org/guides/introduction/…)によると:重要な注意:これは非推奨とマークされています。
agassner 2017

142

まず、この答えを匿名のスタックオーバーフローユーザーに紹介したいと思います。以前に同じような答えを見たことがあると思いますが、今は見つかりません。

ローカルJARファイルを依存関係として持つ最良のオプションは、ローカルMavenリポジトリーを作成することです。このようなリポジトリは、pomファイルを含む適切なディレクトリ構造にすぎません。

私の例では、${master_project}ロケーションにマスタープロジェクトがあり、subproject1がオンになってい${master_project}/${subproject1}ます。

次に、Mavenリポジトリを次の場所に作成します ${master_project}/local-maven-repo

にあるsubproject1のpomファイルで${master_project}/${subproject1}/pom.xml、ファイルパスをURLパラメータとして取るリポジトリを指定する必要があります。

<repositories>
    <repository>
        <id>local-maven-repo</id>
        <url>file:///${project.parent.basedir}/local-maven-repo</url>
    </repository>
</repositories>

他のリポジトリと同様に依存関係を指定できます。これにより、pomリポジトリが独立します。たとえば、目的のJARがMavenセントラルで利用可能になったら、ローカルリポジトリから削除するだけで、デフォルトのリポジトリからプルされます。

    <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.servicebinder</artifactId>
        <version>0.9.0-SNAPSHOT</version>
    </dependency>

最後にすべきことは、次のように-DlocalRepositoryPathスイッチを使用してJARファイルをローカルリポジトリに追加することです。

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file  \
    -Dfile=/some/path/on/my/local/filesystem/felix/servicebinder/target/org.apache.felix.servicebinder-0.9.0-SNAPSHOT.jar \
    -DgroupId=org.apache.felix -DartifactId=org.apache.felix.servicebinder \
    -Dversion=0.9.0-SNAPSHOT -Dpackaging=jar \
    -DlocalRepositoryPath=${master_project}/local-maven-repo

JARファイルをインストールすると、Mavenリポジトリをコードリポジトリにコミットでき、セットアップ全体がシステムに依存しなくなります。(GitHubでの作業例)。

JARをソースコードリポジトリにコミットすることは良い習慣ではないことに同意しますが、実際には、公開していない1つのJARをホストするための本格的なNexusリポジトリよりも迅速でダーティーなソリューションの方が優れている場合があります。


mavenリポジトリとしてのローカル相対ディレクトリ...
非常に役立ちました

4
pom.xmlでこれを行う場合は、baeldung.com / install
Kai Wang

@Kai Wangこのソリューションは非常にうまく機能します!これを回答として追加する必要があります。
lockwobr 2016

7
${project.parent.basedir}今日は何にも解決しないようですので、私${project.basedir}/..は完璧に使用しました。
インパラー

1
ヒント:$ HOME / .m2 / settings.xmlを確認してください。「local-maven-repo」がsettings / mirrors / mirrorによってミラー化されないようにしてください <mirrorOf>*</mirrorOf>
btpka3

125

新しいフォルダーを作成します。たとえばlocal-maven-repo、Mavenプロジェクトのルートに作成します。

ちょうどあなたの内部のローカルリポジトリを追加<project>あなたのpom.xml

<repositories>
    <repository>
        <id>local-maven-repo</id>
        <url>file:///${project.basedir}/local-maven-repo</url>
    </repository>
</repositories>

次に、インストールする外部jarごとに、プロジェクトのルートに移動して実行します。

mvn deploy:deploy-file -DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] -Durl=file:./local-maven-repo/ -DrepositoryId=local-maven-repo -DupdateReleaseInfo=true -Dfile=[FILE_PATH]

16
これは、デプロイを使用するときにリポジトリを正しく作成するため、ここでの唯一の正解です。
opticyclic 2016

この方法は、コードがCIビルドサーバーを使用してデプロイされている場合に機能しますか?自動ビルドは依存関係にアクセスできないようです。
Wallace Howery

2
@ user2748659はい、あなたのCIの構築サーバーにフォルダがあればlocal-maven-repo、あなたのソースフォルダに(この例では、子供のように)含まれている
アンソニーO.

3
この答えが私にとってうまくいきました。共有プロジェクトの場合、プロジェクトディレクトリにリポジトリを作成してバージョン管理に追加すると、プロジェクトをチェックアウトする人が依存関係を失うことがなくなります。依存関係がたくさんある場合は、共有のリモートリポジトリがおそらくより良いソリューションです。それ以外の場合は、プロジェクトのディレクトリにリポジトリを保持することで問題ありません。
Aquarelle、2018

2
これを行うには、-Dpackaging = jarを追加する必要がある場合があります。それ以外の場合は、「アーティファクト情報が不完全または無効です:パッケージがありません」と表示されます。
J Woodchuck

43

私はそのような解決策maven-install-pluginが欲しい-pomファイルで使用:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <phase>initialize</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <file>lib/yourJar.jar</file>
                <groupId>com.somegroup.id</groupId>
                <artifactId>artefact-id</artifactId>
                <version>x.y.z</version>
                <packaging>jar</packaging>
            </configuration>
        </execution>
    </executions>
</plugin>

この場合、実行できmvn initialize、jarはローカルのmavenリポジトリにインストールされます。これで、このjarは、このマシンのすべてのmavenステップで使用できます(この依存関係を他のmaven依存関係として<dependency></dependency>タグ付きpomに含めることを忘れないでください)。jarのインストールをinitializeステップではなく、他の任意のステップにバインドすることもできます。


2
これは私にとってはうまく機能しますが、mvn initialize以前に実行した場合にのみmvn packagemvn initialize package中央リポジトリからJARをダウンロードできない、またはダウンロードしようとします。どうしてこれなの?この目標/フェーズを順番に実行すると思いました。
DavidS

1
実際には、順番に実行する必要があります。デフォルトのライフサイクルのリストを見てください:maven.apache.org/guides/introduction/…別の手順を使用してバインドできます。
2017年

2
私はあらゆる方法を試しましたが、結局私はこの解決策に頼らなければなりませんでした。主な理由は、オフラインモードでパッケージをローカルでビルドできるようにしたかったからです。ローカルで定義されたリポジトリとの依存関係として宣言した場合、これは常に別のオンラインリポジトリと見なされ、Mavenビルドはアーティファクトをファイニングしないと不満を漏らしました。このソリューションは、すべてのケースで正常に機能します。
Mauli

2
初期化はmvnパッケージを使用するたびに実行されるため、クリーンフェーズを使用する方が良いと思います。最後に、jar / warを生成するだけの場合は、mvn clean packageを直接使用できます
デオキシセイア2018

jarのインストールをバインドして、ステップを初期化するのではなく、他の任意のステップを実行することもできます。」は必ずしも当てはまりません。依存関係がまだリポジトリ内になく、依存関係を解決するフェーズ(例:)の後に続くフェーズが使用さcompileれる場合、ビルドは失敗します。
GeroldBroserがモニカを2018

29
<dependency>
    <groupId>group id name</groupId>
    <artifactId>artifact name</artifactId>
    <version>version number</version>
    <scope>system</scope>
    <systemPath>jar location</systemPath>
</dependency>

6
<scope>systemは非推奨になりました。
GeroldBroserがモニカを2018

@GeroldBroser-わかりました。その代わりに何を使うことができますか?
MasterJoe2

2
@ MasterJoe2 承認済み回答 でも言及されているinstall:install-fileように、ローカルリポジトリへのアーティファクトを "通常の"依存関係(デフォルトのスコープcompile)として使用するか、プロジェクト内リポジトリソリューションを使用します
GeroldBroserが


14

本当に速くて汚い方法はローカルファイルを指すことです:

<dependency>
      <groupId>sample</groupId>  
       <artifactId>com.sample</artifactId>  
       <version>1.0</version> 
      <scope>system</scope>
      <systemPath>C:\DEV\myfunnylib\yourJar.jar</systemPath>
</dependency>

ただし、これはお使いのマシンにのみ存在します(明らかに)。共有するには、通常、適切なm2アーカイブ(nexus / artifactory)を使用するか、これらのアーカイブがないか、ローカルのmavenをセットアップしたくない場合構造化されたアーカイブとpomの「リポジトリ」を構成:ローカル:

<repositories>
    <repository>
        <id>my-local-repo</id>
        <url>file://C:/DEV//mymvnrepo</url>
    </repository>
</repositories>

リモート:

<repositories>
    <repository>
        <id>my-remote-repo</id>
        <url>http://192.168.0.1/whatever/mavenserver/youwant/repo</url>
    </repository>
</repositories>

このため、basedir変数を使用して相対パスを使用することもできます。

<url>file:${basedir}</url>

ローカルリポジトリのURLの場合、相対URLにすることができますか、それとも絶対URLにする必要がありますか?
Dragas

@Dragasまだ試していません。試した場合はお知らせください。
fl0w 2018年

1
ええ、どうやら<url>file:${basedir}</url>代わりにベースURLとして使用する必要があります。
Dragas

11

独自のローカルJARをPOMファイルに追加し、それをmavenビルドで使用します。

mvn install:install-file -Dfile=path-to-jar -DgroupId=owngroupid -DartifactId=ownartifactid -Dversion=ownversion -Dpackaging=jar

例えば:

mvn install:install-file -Dfile=path-to-jar -DgroupId=com.decompiler -DartifactId=jd-core-java -Dversion=1.2 -Dpackaging=jar

次に、次のようにPOMに追加します。

ここに画像の説明を入力してください


「アーティファクトのインストールに失敗しました(アクセスが拒否されました)」というエラーが表示されます。どうすればこれを解決できますか?@Aurasphere
Ramzah Rehman

1
@RamzahRehmanを右クリックし、「管理者として実行」を選択して、admi特権でコマンドプロンプトを開きます
Aurasphere

9

1つの方法は、独自のMavenリポジトリマネージャー(Nexusなど)にアップロードすることです。とにかく、独自のリポジトリマネージャを用意することをお勧めします。

私が最近見たもう1つの良い方法は、ビルドライフサイクルにMavenインストールプラグインを含めることです。ローカルリポジトリにファイルをインストールするようにPOMで宣言します。それは少しですが小さなオーバーヘッドであり、手動の手順は含まれていません。

http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html


4
最終的にgradleに切り替えます。動作しないローカルjarが依存関係として定義されている場合、依存関係を解決する前にmavenがプラグインを実行しないため、手動でのインストールは避けられません。この状況についてdisscussionたstackoverflow.com/questions/5951999/...
xinthink


6

別の興味深いケースは、プロジェクトにプライベートMaven jarを含めたい場合です。推移的な依存関係を解決するためにMavenの機能を維持したい場合があります。解決策はかなり簡単です。

  1. プロジェクトにフォルダーlibsを作成する
  2. pom.xmlファイルに次の行を追加します

    <properties><local.repository.folder>${pom.basedir}/libs/</local.repository.folder>
    </properties>
    
    <repositories>
       <repository>
            <id>local-maven-repository</id>
            <url>file://${local.repository.folder}</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
       </repository>
    </repositories>
  3. .m2 / repositoryフォルダーを開き、インポートするプロジェクトのディレクトリ構造をlibsフォルダーにコピーします。

たとえば、依存関係をインポートしたいとします

<dependency>
    <groupId>com.mycompany.myproject</groupId>
    <artifactId>myproject</artifactId>
    <version>1.2.3</version>
</dependency>

ただ、上に行く.m2 /リポジトリと次のフォルダが表示されます

com / mycompany / myproject / 1.2.3

libsフォルダー内のすべてをコピーします(これも.m2 / repositoryの下のフォルダーを含みます)。これで完了です。


6

コマンドライン :

mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code
-DartifactId=kaptcha -Dversion={version} -Dpackaging=jar

5

依存関係の重要な部分は次のとおりです: $ {pom.basedir}(単なる$ {basedir}の代わりに)

<dependency>
    <groupId>org.example</groupId>
    <artifactId>example</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${pom.basedir}/src/lib/example.jar</systemPath>
</dependency>

4

この問題のより良い解決策は、maven-install-pluginを使用して、インストール時にファイルを自動的にインストールすることです。これが私のプロジェクト用に設定した方法です。

最初に、パス(ローカル.jarを格納する場所)をプロパティとして追加します。

<properties>
    <local.sdk>/path/to/jar</local.sdk>
</properties>

次に、pluginsコンパイル時にjarをインストールするプラグインを追加します。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>1</id>
            <phase>initialize</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <groupId>com.local.jar</groupId> 
                <artifactId>appengine-api</artifactId>
                <version>1.0</version>
                <packaging>jar</packaging>
                <file>${local.sdk}/lib/impl/appengine-api.jar</file>
            </configuration>
        </execution>
        <execution>
            <id>appengine-api-stubs</id>
            <phase>initialize</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <groupId>com.local.jar</groupId>
                <artifactId>appengine-api-stubs</artifactId>
                <version>1.0</version>
                <packaging>jar</packaging>
                <file>${local.sdk}/lib/impl/appengine-api-stubs.jar</file>
            </configuration>
        </execution>
    </executions>
</plugin>

最後に、依存関係では、jarを追加できます

<dependency>
    <groupId>com.local.jar</groupId>
    <artifactId>appengine-api</artifactId>
    <version>1.0</version>
</dependency>

<dependency>
    <groupId>com.local.jar</groupId>
    <artifactId>appengine-api-stubs</artifactId>
    <version>1.0</version>
    <scope>test</scope>
</dependency>

このようにプロジェクトを設定すると、別のコンピューターに移動した場合でも、プロジェクトはビルドを続けます(プロパティで指定されたパスにすべてのjarファイルがある場合local.sdk)。

以下のためにgroupId使用する一意の名前がちょうど競合がないことを確認します。

これで、mvn installユーザーまたはmvn testローカルjarが自動的に追加されます。


3

推奨される方法は、独自のリモートリポジトリを作成することです。

参照してくださいここでそれを行う方法の詳細については。「リモートリポジトリへアップロード」セクションをご覧ください。


3

jarでいっぱいのフォルダーをアップロードできるコードを共有したいと思います。これは、プロバイダーに公開リポジトリーがなく、多数のライブラリーを手動で追加する必要がある場合に役立ちます。メモリ不足エラーの可能性があるため、mavenを直接呼び出すのではなく、.batをビルドすることにしました。これはWindows環境用に準備されましたが、Linux OSに簡単に適応できます。

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.jar.Manifest;

public class CreateMavenRepoApp {

    private static final String OCB_PLUGIN_FOLDER = "C://your_folder_with_jars";

    public static void main(String[] args) throws IOException {

    File directory = new File();
    //get all the files from a directory
    PrintWriter writer = new PrintWriter("update_repo_maven.bat", "UTF-8");
    writer.println("rem "+ new Date());  
    File[] fList = directory.listFiles();
    for (File file : fList){
        if (file.isFile()){               
        String absolutePath = file.getAbsolutePath() ;
        Manifest  m = new JarFile(absolutePath).getManifest();
        Attributes attributes = m.getMainAttributes();
        String symbolicName = attributes.getValue("Bundle-SymbolicName");

        if(symbolicName!=null &&symbolicName.contains("com.yourCompany.yourProject")) {
            String[] parts =symbolicName.split("\\.");
            String artifactId = parts[parts.length-1];
            String groupId = symbolicName.substring(0,symbolicName.length()-artifactId.length()-1);
            String version = attributes.getValue("Bundle-Version");
            String mavenLine= "call mvn org.apache.maven.plugins:maven-install-plugin:2.5.1:install-file -Dfile="+ absolutePath+" -DgroupId="+ groupId+" -DartifactId="+ artifactId+" -Dversion="+ version+" -Dpackaging=jar ";
            writer.println(mavenLine);          
        }

        }
    }
    writer.close();
    }

}

このメインを任意のIDEから実行した後、update_repo_maven.batを実行します。


あなたのコードString symbolicName = attributes.getValue("Bundle-SymbolicName"); if(symbolicName!=null &&symbolicName.contains("com.yourCompany.yourProject"))は、カスタム jar のみがサポートされることを示しているようです。それは私たちが必要とするものではありません:代わりにたくさんのサードパーティのjarファイル。あなたはどのようにインストールする提案があります任意の jarファイルをこのように?
javadba

私はあなたのコードを修正しました:一番下に答えを置きます。
javadba

3

これは新しいバージョンの短い構文です:

mvn install:install-file -Dfile=<path-to-file>

JARがApache Mavenによってビルドされたときに機能します-最も一般的なケースです。次に、META-INFディレクトリのサブフォルダにpom.xmlが含まれます。これはデフォルトで読み込まれます。

出典:http : //maven.apache.org/guides/mini/guide-3rd-party-jars-local.html


2

また、見てください...

<scope>compile</scope>

Mavenの依存関係。これはデフォルトですが、場合によっては、スコープを明示的に設定して、ローカルリポジトリでローカルライブラリを検索するようにMavenも設定しています。


2

何らかの理由で、私がメンテナンスを行っているWebアプリケーションでは、Alireza FattahiのソリューションJJ Romanのソリューションも正しく機能しませんでした。どちらの場合も、コンパイルは正常に行われます(jarが表示されます)が、パッケージには戦争内のjarが含まれていません。

私がそれをうまく機能させる唯一の方法は、瓶を置いて、/src/main/webapp/WEB-INF/lib/それをFattahisのソリューションまたはRomanのソリューションのいずれかと組み合わせることでした。


1

ローカルリポジトリを使用することは必ずしも良い考えではないことに注意してください。このプロジェクトが他の人と共有されている場合、それが機能しない場合は他のすべての人に問題と質問があり、ソース管理システムでもjarを使用できません。

共有リポジトリが最善の答えですが、何らかの理由でこれを実行できない場合は、jarを埋め込む方がローカルリポジトリよりも優れています。ローカルのみのリポジトリのコンテンツは、特に時間の経過とともに、多くの問題を引き起こす可能性があります。


1
ソース管理システムにjarを追加した場合、ライブラリは常にソースとともに利用できます。ソースなし、ライブラリなし。代わりにmavenを使用すると、ソースは問題ないかもしれませんが、リポジトリは利用できません。
sarah.ferguson

@フランク...外部依存関係(ライブラリファイル)を含めずに実行可能なjarを作成する方法についてのアイデアはありますか?
Satish Karuturi

mavenが初めてで、元の質問への回答を探している場合、「jarファイルを埋め込む」とはどういう意味ですか?
cdock

1

ローカルリポジトリにコマンドを発行してjarをインストールできます

 mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

この便利なリンクをたどって 、mkyoungのウェブサイトから同じことをしてください。Mavenガイド同じようにチェックできます


1

サードパーティのjarをインストールするには、次のようなコマンドを呼び出してください

mvn install:install-file -DgroupId= -DartifactId= -Dversion= -Dpackaging=jar -Dfile=path

1
  1. mvn install

コマンドラインで以下のコードを書くか、Eclipse組み込みのMavenを使用している場合は、プロジェクトを右クリックして->実行->構成を実行...->左パネルでMavenビルドを右クリック->新しい構成->書き込みゴールとベースディレクトリのコード:$ {project_loc:NameOfYourProject}->実行

mvn install:install-file
   -Dfile=<path-to-file>
   -DgroupId=<group-id>
   -DartifactId=<artifact-id>
   -Dversion=<version>
   -Dpackaging=<packaging>
   -DgeneratePom=true

それぞれの意味は次のとおりです。

<path-to-file>:ロードするファイルへのパス例-> c:\ kaptcha-2.3.jar

<group-id>:ファイルを登録するグループ(例:-> com.google.code)

<アーティファクトID>:ファイルのアーティファクト名例-> kaptcha

<バージョン>:ファイルのバージョン例-> 2.3

<パッケージング>:ファイルのパッケージ化例--jar

2.インストール後、pom.xmlでjarを宣言するだけです。

 <dependency>
      <groupId>com.google.code</groupId>
      <artifactId>kaptcha</artifactId>
      <version>2.3</version>
 </dependency>

1

ステップ1:でmaven-install-plugin目標を設定install-fileしますpom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <executions>
        <execution>
            <id>install-external-non-maven-jar-MWS-Client-into-local-maven-repo</id>
            <phase>clean</phase>
            <configuration>
                <repositoryLayout>default</repositoryLayout>
                <groupId>com.amazonservices.mws</groupId>
                <artifactId>mws-client</artifactId>
                <version>1.0</version>
                <file>${project.basedir}/lib/MWSClientJavaRuntime-1.0.jar</file>
                <packaging>jar</packaging>
                <generatePom>true</generatePom>
            </configuration>
            <goals>
                <goal>install-file</goal>
            </goals>
        </execution>
    </executions>
</plugin>

file実際のファイルパスに基づいてパスを編集するようにしてください(これらの外部の非Maven jarをいくつかのフォルダー内に配置することをお勧めします。たとえばlib、このlibフォルダーをプロジェクト内に配置して、プロジェクト固有の相対パスを使用し、システムの追加を避けます。特定の絶対パス。

複数の外部jarがある場合は<execution>、同じ内の他のjarに対してを繰り返しますmaven-install-plugin

ステップ2:ファイルにmaven-install-plugin上記のようにを設定pom.xmlしたらpom.xml、通常どおりにこれらのjarを使用する必要があります。

    <dependency>
        <groupId>com.amazonservices.mws</groupId>
        <artifactId>mws-client</artifactId>
        <version>1.0</version>
    </dependency>

maven-install-plugin、外部jarをローカルの.m2mavenリポジトリにコピーするだけであることに注意してください。それでおしまい。これらのjarがプロジェクトへのmaven依存関係として自動的に含まれることはありません。

ささいなことですが、見逃してしまうこともあります。


0

pom.xmlの一連の依存関係について同じエラーが発生しましたが、依存関係のバージョンがpom.xmlで指定されておらず、親リポジトリで言及されていました。何らかの理由で、バージョンの詳細がこのリポジトリと同期していませんでした。したがって、タグを使用して手動でバージョンを入力し、それは魅力のように機能しました。親でバージョンを調べて、ここで指定するのに少し時間がかかりました。しかし、これは、artifactidエラーを示しているjarに対してのみ実行でき、機能します。これが誰かを助けることを願っています。


0

Apache Maven 3.5.4では、二重引用符を追加する必要がありました。二重引用符がなければ、それは私にとってはうまくいきませんでした。

例:mvn install:install-file "-Dfile = location to the jar file" "-DgroupId = group id" "-DartifactId = artifact id" "-Dversion = version" "-Dpackaging = package type"


0
  1. ローカルのMavenリポジトリディレクトリを作成します。プロジェクトのルートは、最初は次のようになります。
yourproject
+- pom.xml
+- src
  1. グループcom.exampleとバージョン1.0のrepoと呼ばれる標準のMavenリポジトリディレクトリを追加します。
yourproject
+- pom.xml
+- src
+- repo
  1. アーティファクトをリポジトリにデプロイすると、Mavenはmvn deploy:deploy-fileゴールを使用してアーティファクトをデプロイできます。
mvn deploy:deploy-file -Durl=file:///pathtoyour/repo -Dfile=your.jar -DgroupId=your.group.id -DartifactId=yourid -Dpackaging=jar -Dversion=1.0
  1. ローカルリポジトリからのMavenビルド中にプロジェクトがjarを見つけることができるように、jarに対応するpomファイルをインストールします。
mvn install:install-file -Dfile=/path-to-your-jar-1.0.jar -DpomFile=/path-to-your-pom-1.0.pom
  1. pomファイルにリポジトリを追加します。
<repositories>
    <!--other repositories if any-->
    <repository>
        <id>project.local</id>
        <name>project</name>
        <url>file:${project.basedir}/repo</url>
    </repository>
</repositories>
  1. pomに依存関係を追加します。
<dependency>
    <groupId>com.groupid</groupId>
    <artifactId>myid</artifactId>
    <version>1.0</version>
</dependency>

-2

この回答は、ECLIPSEユーザーのみを対象としています。

Eclipseを使用している場合は、jarをlib /に配置し、jar名を右クリックして[ビルドパスに追加]をクリックします。Eclipseは「参照ライブラリ」を作成し、jarを配置します

それは私のためにプログラムですぐに瓶のインポートを解決しました


5
これはEclipseのにエントリが追加されます.classpathが、あなたのMavenビルドはmvn packageMavenのは、それが定義されていませんし、それだけにする必要がありますように、あなたはその依存関係を使用して開始するとbrocketになりますpom.xml
ポールVerest

はい、そうです、パッケージにはローカルjarは含まれません。しかし、私はそれをプロジェクトに追加する方法(日食の方法で)の質問に答えました。
Anandkumar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.