87

Android プロジェクトに JAR があり、それを最終的な APK に追加したいと考えています。さて、ここに行きます:

    <dependency>
        <groupId>com.loopj.android.http</groupId>
        <artifactId>android-async-http</artifactId>
        <version>1.3.2</version>
        <type>jar</type>
        <scope>system</scope>
        <systemPath>${project.basedir}/libs/android-async-http-1.3.2.jar</systemPath>
    </dependency>

しかし、実行mvn package中に警告が表示されます。

[WARNING] Some problems were encountered while building the effective model for **apk:1.0
[WARNING] 'dependencies.dependency.systemPath' for com.loopj.android.http:android-async-http:jar should not point at files within the project directory, ${project.basedir}/libs/android-async-http-1.3.2.jar will be unresolvable by dependent projects @ line 36, column 25

最終的な APK には JAR はありません。

どうすれば修正できますか?

4

9 に答える 9

151

本当の理由はわかりませんが、Maven は開発者にすべてのライブラリ (カスタムも含む) をいくつかの Maven リポジトリにインストールするように促しているため、scope:systemあまり好まれていません。maven-install-plugin

使用法に従ってください:

この方法で依存関係を記述します

<dependency>
    <groupId>com.mylib</groupId>
    <artifactId>mylib-core</artifactId>
    <version>0.0.1</version>
</dependency>

次に、maven-install-plugin を追加します

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>install-external</id>
            <phase>clean</phase>
            <configuration>
                <file>${basedir}/lib/mylib-core-0.0.1.jar</file>
                <repositoryLayout>default</repositoryLayout>
                <groupId>com.mylib</groupId>
                <artifactId>mylib-core</artifactId>
                <version>0.0.1</version>
                <packaging>jar</packaging>
                <generatePom>true</generatePom>
            </configuration>
            <goals>
                <goal>install-file</goal>
            </goals>
        </execution>
    </executions>
</plugin>

に注意してphase:cleanください。カスタム ライブラリをリポジトリにインストールするには、実行してから実行する必要がありますmvn cleanmvn install

于 2015-06-24T09:59:43.637 に答える
25

jarをローカルの Maven リポジトリに追加する必要があります。または(より良いオプション)適切なリポジトリ(存在する場合)を指定して、mavenによって自動的にダウンロードできるようにします

いずれの場合も<systemPath>、依存関係からタグを削除します

于 2012-06-07T15:46:08.203 に答える
17
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <includeSystemScope>true</includeSystemScope>
    </configuration>
</plugin>

これを試して。

于 2017-12-07T02:09:16.647 に答える
11

システム スコープは、「システム」ファイルを処理するためだけに設計されました。固定された場所にあるファイル。/usr/lib、または${java.home}(例)内のファイルtools.jar.jarプロジェクト内のその他のファイルをサポートするようには設計されていません。

著者は意図的に、パス名の展開を適切に機能させることを拒否して、あなたを思いとどまらせました。その結果、短期的にはinstall:install-file、ローカル リポジトリにインストールするために使用でき、その後、いつかリポジトリ マネージャーを使用して共有できます。

于 2012-06-07T16:25:59.817 に答える
4

この構成を試してください。それは私のために働いた:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <warSourceDirectory>mywebRoot</warSourceDirectory>
        <warSourceExcludes>source\**,build\**,dist\**,WEB-INF\lib\*,
            WEB-INF\classes\**,build.*
        </warSourceExcludes>
        <webXml>myproject/source/deploiement/web.xml</webXml>
        <webResources>
            <resource>
                <directory>mywebRoot/WEB-INF/lib</directory>
                <targetPath>WEB-INF/lib</targetPath>
                <includes>
                        <include>mySystemJar1.jar.jar</include>
                         <include>mySystemJar2.jar</include>
                   </includes>
            </resource>
        </webResources>
    </configuration>
</plugin>
于 2015-07-08T12:43:24.257 に答える
3

リポジトリ マネージャを使用して、この種の jar をそこにインストールします。これにより、ネットワーク内のすべてのコンピューターの問題がまったく解決されます。

于 2012-06-07T16:02:20.853 に答える
1

mvn install:install-file -DgroupId=com.paic.maven -DartifactId=tplconfig-maven-plugin -Dversion=1.0 -Dpackaging=jar -Dfile=tplconfig-maven-plugin-1.0.jar -DgeneratePom=true

jar をローカル リポジトリにインストールします。

于 2016-08-18T00:59:19.893 に答える