1430

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

4

33 に答える 33

1660

次のように、ローカルの依存関係を直接追加できます(適切なライブラリが含まれているビルド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ファイルにのみ依存関係を作成します。この機能が削除された場合、まあ、私が後で選ぶことができるここにたくさんの良い答えがあります!

于 2014-03-10T13:02:27.613 に答える
934

次のように、JARをローカルのMavenリポジトリー(通常.m2はホームフォルダー)にインストールします。

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>:ファイルを登録するグループeg→com.google.code

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

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

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

参照

于 2011-02-10T10:08:29.217 に答える
179

まず、匿名のStack Overflowユーザーにこの回答の功績を認めたいと思います。これまでに同様の回答を見たことがあると思いますが、今は見つかりません。

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

私の例では、マスタープロジェクトが${master_project}ロケーションにあり、サブプロジェクト1がにあり${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 Centralで使用可能になったら、ローカルリポジトリから削除するだけで、デフォルトのリポジトリからプルされます。

    <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リポジトリよりも迅速でダーティなソリューションの方が優れている場合があります。

于 2015-02-27T10:17:03.310 に答える
168

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]
于 2016-04-13T14:55:36.057 に答える
63

私はそのような解決策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リポジトリにインストールされます。<dependency></dependency>これで、このjarは、このマシンの任意のMavenステップで使用できます(タグ付きのpomに他のMaven依存関係としてこの依存関係を含めることを忘れないでください)。jar installをinitializeステップではなく、他の任意のステップにバインドすることもできます。

于 2016-07-12T21:58:10.267 に答える
34

本当に速くて汚い方法はローカルファイルを指すことです、「システム」は今では非推奨になっていることに注意してください:

<dependency>
    <groupId>com.sample</groupId>  
    <artifactId>samplifact</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>
于 2018-08-02T06:47:03.050 に答える
32
<dependency>
    <groupId>group id name</groupId>
    <artifactId>artifact name</artifactId>
    <version>version number</version>
    <scope>system</scope>
    <systemPath>jar location</systemPath>
</dependency>
于 2016-01-09T08:48:05.550 に答える
19

依存関係の重要な部分は次のとおりです。 ${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>
于 2019-11-22T22:48:42.697 に答える
16

POMファイルに独自のローカルJARを追加し、それを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に追加します。

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

于 2017-07-05T06:22:36.653 に答える
12

ステップ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これらのjarを使用する必要があります。pom.xml

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

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

マイナーな点ですが、見逃しやすいこともあります。

于 2020-05-03T15:05:16.317 に答える
11

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

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

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

于 2011-02-10T10:39:02.563 に答える
10

もちろん、そのフォルダにjarファイルを追加することもできます。しかし、多分それはあなたが達成したいことではありません...

コンパイルにこれらのjarが必要な場合は、次の関連する質問を確認してください。jarをインストールせずにmaven 2ビルドクラスパスに追加できますか?

また、誰かがそれを提案する前に、システムスコープを使用しないでください。

于 2011-02-10T10:15:45.883 に答える
9

もう1つの興味深いケースは、プロジェクトにプライベートMavenjarを入れたい場合です。推移的な依存関係を解決するために、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 / repositoryに進むと、次のフォルダーが表示されます。

com / mycompany / myproject / 1.2.3

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

于 2017-06-19T06:46:05.703 に答える
8

コマンドライン :

mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code
-DartifactId=kaptcha -Dversion={version} -Dpackaging=jar
于 2017-11-30T15:04:12.527 に答える
8

jarローカルライブラリとそのライブラリをsourcesMavenjavadocプロジェクトに追加します

jarライブラリ、their、sourcesおよびを含むプリコンパイル済みファイルがある場合は、次のようにローカルのMavenリポジトリにファイルを追加javadocできます。install

mvn install:install-file
    -Dfile = awesomeapp-1.0.1.jar \
    -DpomFile = awesomeapp-1.0.1.pom \
    -Dsources = awesomeapp-1.0.1-sources.jar \ 
    -Djavadoc = awesomeapp-1.0.1-javadoc.jar \
    -DgroupId = com.example \
    -DartifactId = awesomeapp \
    -Dversion = 1.0.1 \
    -Dpackaging = jar

次に、プロジェクトで次のライブラリを使用できます。

<!-- com.example -->
<dependency>
    <groupId>com.example</groupId>
    <artifactId>awesomeapp</artifactId>
    <version>1.0.1</version>
</dependency>

maven-install-pluginの使用法を参照してください。


または、buildこれらのライブラリを自分でsources使用javadocして、 maven-source-pluginmaven-javadoc-pluginを使用してから、それらを使用することもできinstallます。

プロジェクト例:ライブラリ

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <url>https://example.com/awesomeapp</url>

    <groupId>com.example</groupId>
    <artifactId>awesomeapp</artifactId>
    <name>awesomeapp</name>
    <version>1.0.1</version>
    <packaging>jar</packaging>

    <properties>
        <java.version>12</java.version>
    </properties>

    <build>
        <finalName>awesomeapp</finalName>
        <defaultGoal>install</defaultGoal>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <inherited>true</inherited>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.2.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals><goal>jar</goal></goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <inherited>true</inherited>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals><goal>jar</goal></goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Maveninstallの目標を実行します。

mvn install

ローカルのMavenリポジトリを確認します。

~/.m2/repository/com/example/awesomeapp/1.0.1/
 ├─ _remote.repositories
 ├─ awesomeapp-1.0.1.jar
 ├─ awesomeapp-1.0.1.pom
 ├─ awesomeapp-1.0.1-javadoc.jar
 └─ awesomeapp-1.0.1-sources.jar

次に、このライブラリを使用できます。

<!-- com.example -->
<dependency>
    <groupId>com.example</groupId>
    <artifactId>awesomeapp</artifactId>
    <version>1.0.1</version>
</dependency>
于 2020-08-05T04:46:23.567 に答える
7

この問題のより良い解決策は、 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が自動的に追加されます。

于 2018-06-10T22:19:32.513 に答える
5

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

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

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

ソース: http: //maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

于 2016-11-04T16:25:00.517 に答える
4

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

方法の詳細については、こちらをご覧ください。「リモートリポジトリへのアップロード」セクションをご覧ください。

于 2011-02-10T10:09:23.523 に答える
4

jarファイルでいっぱいのフォルダをアップロードできるコードを共有したいと思います。プロバイダーにパブリックリポジトリがなく、手動で多数のライブラリを追加する必要がある場合に便利です。メモリ不足エラーの可能性があるため、Mavenを直接呼び出す代わりに.batを作成することにしました。これはWindows環境用に準備されていますが、LinuxOSに簡単に適合させることができます。

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を実行します。

于 2016-02-11T21:05:09.970 に答える
2

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

<scope>compile</scope>

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

于 2015-03-22T04:19:57.263 に答える
2

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

mvn install:install-file -DgroupId= -DartifactId= -Dversion= -Dpackaging=jar -Dfile=path
于 2017-03-15T08:01:29.467 に答える
2

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

私がそれを機能させることができた唯一の方法は、瓶を置き、/src/main/webapp/WEB-INF/lib/それをFattahisまたはRomanの解決策と組み合わせることでした。

于 2017-09-14T17:26:03.917 に答える
1

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

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

于 2015-12-01T19:05:56.803 に答える
1

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

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

mkyoungのウェブサイトから同じことを行うには、この便利な リンクをたどってください。同じことについてMavenガイドを確認することもできます

于 2017-02-04T18:09:03.247 に答える
1
  1. mvnインストール

以下のコードをコマンドラインで記述できます。または、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)

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

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

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

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

 <dependency>
      <groupId>com.google.code</groupId>
      <artifactId>kaptcha</artifactId>
      <version>2.3</version>
 </dependency>
于 2018-07-31T16:35:03.037 に答える
1
  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. jarに対応するpomファイルをインストールして、プロジェクトがローカルリポジトリからのMavenビルド中にjarを見つけられるようにします。
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>
于 2020-04-01T02:14:41.350 に答える
1

おそらく誰かが興味を持っているでしょう: https ://github.com/Limraj/maven-artifact-generator

ローカルリポジトリにMavenアーティファクトを生成し、jarへのパスに基づいてpom.xmlの依存関係を構成するコンソールプログラム。これは1つのファイルに対して実行できますが、複数のjarファイルがある場合に最も役立ちます。

パスjar:java -jar maven-artifact-generator-XXXjar -p path_to_jars -g com.test -V 1.2.3 -P jar

jar:java -jar maven-artifact-generator-XXXjar -f file_jar -g com.test -V 1.2.3 -P jar

これにより、ローカルのMavenリポジトリにアーティファクトが生成され、gen.logにpom.xmlの依存関係が生成されます。ArtifactIdは、jarファイルの名前です。

Mavenがインストールされている必要があります。widnows7およびmacOSX(unix / linux)でのテスト。

于 2020-11-26T12:53:36.837 に答える
0

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

于 2018-02-21T09:17:41.603 に答える
0

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

例:mvn install:install-file "-Dfile =jarファイルへの場所""-DgroupId = group id" "-DartifactId = Artifact id" "-Dversion = version" "-Dpackaging = package type"

于 2018-09-05T10:54:22.797 に答える
0

元の質問への回答ではありませんが、誰かにとって役立つかもしれません

Mavenを使用してフォルダーから複数のjarライブラリを追加する適切な方法はありません。依存関係が少ない場合はmaven-install-plugin、上記の回答に記載されているように構成する方がおそらく簡単です。

ただし、私の特定のケースでは、lib100を超える独自のjarファイルを含むフォルダーがあり、何らかの方法で追加する必要がありました。そして私にとっては、Mavenプロジェクトをに変換する方がはるかに簡単でしたGradle

plugins {
    id 'org.springframework.boot' version '2.2.2.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
    flatDir {
       dirs 'libs' // local libs folder
   }
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
    
    implementation 'io.grpc:grpc-netty-shaded:1.29.0'
    implementation 'io.grpc:grpc-protobuf:1.29.0'
    implementation 'io.grpc:grpc-stub:1.29.0' // dependecies from maven central

    implementation name: 'akka-actor_2.12-2.6.1' // dependecies from lib folder
    implementation name: 'akka-protobuf-v3_2.12-2.6.1'
    implementation name: 'akka-stream_2.12-2.6.1'

 }
于 2020-07-23T21:57:05.950 に答える
0

シェーディングされたjarファイルには、AlirezaFattahiのソリューションを使用したサードパーティのライブラリが含まれていませんでした。ただし、前回同じプロジェクトで試したところ、動作していたことを覚えています。だから、私は自分の解決策を試しました:

  1. mkdir .m2 / repositoryディレクトリの下のプロジェクトのパス(そのディレクトリにある他のMaven依存関係ディレクトリと同様)
  2. サードパーティのjarファイルをその中に入れます。
  3. Mavenリポジトリのライブラリと同じように依存関係を追加します。

最後に、それは私のために働いた。:)

于 2020-11-15T13:50:40.550 に答える
0

私の場合、既存のMavenビルドはすでに問題のjarファイルをローカルリポジトリにインストールしていることがわかりましたが、ローカルビルドは接尾辞「-SNAPSHOT」を含むアーティファクトを生成するため、期待される結果は表示されませんでした。私にとって非常に簡単な解決策は、ローカルでビルドされたjarファイルを使用するプロジェクトのpom.xmlファイルを名前と一致するように更新することでした。

<myproject.foo.version>1.88-SNAPSHOT</myproject.foo.version>

それ以外の

<myproject.foo.version>1.88</myproject.foo.version>

要点は、jarファイルがすでにローカルの.m2 / mavenリポジトリにあると思われる場合は、その可能性が非常に高いため、それに応じて依存関係を更新する必要があるということです。

于 2021-07-29T16:43:16.853 に答える
0

Spring開発者の場合、Spring Bootビルドから作成したJARは、別のビルドでは依存関係JARとして機能しないことがわかります。POMにこれがあるかどうかを確認します。

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

mvn packageまた、ディレクトリに.jarだけでなく.jar.originalファイルも表示されるかどうかを実行するかどうかも確認してくださいtarget/。その場合は、その.jar.originalファイルをローカル開発に使用する必要があります(lib /などに配置します)。

もちろん、これを回避することができます。Springのプラグインマニュアルを参照している元の投稿を参照してください。が必要になると思い<configuration> <attach>false</attach> <configuration>ます。次にデプロイする必要があり、Mavenは.jar.originalファイルを使用する必要があります。私はこれを自分で試したことがないので、知らせてください!

于 2021-12-16T20:12:47.700 に答える