12

Spring roo プロジェクト (基本的には Maven プロジェクト) があります。プロジェクトに Dropbox SDK を追加したいのですが、問題はそれが Maven にないことです。以下のファイルを追加しました

    <dependency>
        <groupId>com.dropbox</groupId>
        <artifactId>dropbox-sdk</artifactId>
        <version>1.3.1</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/libs/dropbox-java-sdk-1.3.1.jar</systemPath>
    </dependency>

コンパイルエラーは解決しましたが、Spring Tool Suite でプロジェクトを実行すると、jar ファイルが war lib フォルダーに追加されません。maven に外部 jar ファイルを war lib フォルダーに追加させるにはどうすればよいですか?

プロジェクトを使用するすべてのマシンにインストールする必要があるため、mavenにjarをインストールしたくありません

4

7 に答える 7

14

私はついに、実装がはるかに簡単な、きちんとしたソリューションを見つけました。Javaプロジェクト内にプロジェクト内リポジトリを追加し、pom内でそれにリンクします。

次のように、Mavenにプロジェクト内リポジトリを追加します。

<repository>
    <id>in-project</id>
        <name>In Project Repo</name>
        <url>file://${project.basedir}/libs</url>
</repository>

次に、プロジェクトのルートフォルダに次のようなフォルダ構造を作成します

/groupId/artifactId/version/artifactId-version.jar

通常どおりに依存関係を追加します。

このアプローチでは、必要なコードと作業の量が最小限であり、そのライブラリがMavenリポジトリに追加された場合は、プロジェクト内のリポジトリをいつでも削除できます。

http://bit.ly/OGVHSN

于 2012-08-07T01:32:00.567 に答える
3

このアプローチはお勧めしませんが、POM 構成を追加して、サードパーティの依存関係を別のプロファイルにインストールできます。

<profiles>
    <profile>
        <id>install-dependencies</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.3.1</version>
                    <executions>
                        <execution>
                            <id>install-dropbox-sdk</id>
                            <phase>validate</phase>
                            <goals>
                                <goal>install-file</goal>
                            </goals>
                            <configuration>
                                <groupId>com.dropbox</groupId>
                                <artifactId>dropbox-sdk</artifactId>
                                <version>1.3.1</version>
                                <file>src/main/lib/dropbox-java-sdk-1.3.1.jar</file>
                                <packaging>jar</packaging>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

    <profile>
        <id>build</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>

        <dependencies>
            <dependency>
                <groupId>com.dropbox</groupId>
                <artifactId>dropbox-sdk</artifactId>
                <version>1.3.1</version>
            </dependency>
        </dependencies>
    </profile>
</profiles>

ここには と の 2 つのプロファイルがありinstall-dependenciesますbuild。1 つ目は依存関係を Maven リポジトリにインストールし、dropbox-sdk次のようにすべてのマシンで 1 回実行する必要があります。

mvn -Pinstall-dependencies validate

2 つ目はデフォルトで有効になっており、Dropbox SDK を依存関係として追加します。

正直なところ、これは実行するよりもはるかに優れているわけではありません

mvn install:install-file -Dfile=src/main/lib/dropbox-java-sdk-1.3.1.jar -DgroupId=com.dropbox -DartifactId=dropbox-sdk -Dversion=1.3.1 -Dpackaging=jar

すべてのマシンで。

このアプローチのもう 1 つの欠点はdropbox-sdk、ビルドにすべての依存関係を追加する必要があることです。一方、JAR と POM をリポジトリ サーバーに追加して適切に実行すると、Maven は推移的な依存関係を適切に計算します。 .

于 2012-05-20T18:45:23.020 に答える
2

Nexus や Artifactory などの Maven リポジトリ サーバーに「サード パーティ」リポジトリを作成し、そこに jar をアップロードすることをお勧めします。これは jar を Maven に入れることを意味しますが、少なくともリポジトリ サーバーがあれば、アプリケーションを構築する誰でも利用できます。

于 2012-05-19T16:08:34.873 に答える
0
  1. lib パスを次のように変更します: src/main/webapp/WEB-INF/lib

  2. pom.xml で:

    <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/xxxx.jar</systemPath>

于 2014-03-05T03:10:22.423 に答える
-1

私は本当に遅れていることを知っていますが、なぜ.m2ファイルのローカルレポにjarを入れず、そこからpomへの参照を追加しないのか疑問に思っていましたか?

于 2013-09-17T19:01:16.947 に答える