2

Mavenで理解できないことがあり、そこには答えが見つかりませんでした。だから私はここでそれを尋ね、答えを得ることを望んでいます。
システムスコープとしてプロジェクトのMaven依存関係としてjarを追加しました。依存関係プラグインでゴール
を実行すると、それが見つかります。analyze-onlyしかし、このjarのデフォルトパッケージにあるクラスを使用したいときはいつでも、コンパイルされません。
同じクラスの同じプロバイダーのjarで同じことを行いましたが、今回はデフォルト以外の1つのパッケージにあり、コンパイルされます。
私が見逃した明らかな何かがありますか、または誰かがすでに同じ問題に遭遇しましたか?

システム依存関係のクラスの1つをインポートしようとしているだけなので、コードを投稿する価値はありません。
私のPOM(システム依存関係)

 <?xml version="1.0" encoding="UTF-8"?>
 <project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>edu.algo</groupId>
  <artifactId>algorithms</artifactId>
  <version>1.0</version>
  <properties>
    <lib.path>C:/lib</lib.path>
  </properties>

  <dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>edu.princeton.cs</groupId>
        <artifactId>stdlib</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${lib.path}/stdlib/stdlib.jar</systemPath>
    </dependency>
  </dependencies>
  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.6</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
  </build>
</project>
4

2 に答える 2

2

ご迷惑をおかけして申し訳ありません。ご協力いただきありがとうございます。
私は自分の質問に対する答えを見つけましたが、それはMavenとは何の関係もありません。1.4より上のJavaバージョンの名前付きパッケージからデフォルトパッケージのクラスをインポートすることはできません。コンパイルには1.7バージョンを使用していました。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4989710

于 2013-02-27T23:24:34.167 に答える
1

探しているJARを提供しましたか?コンパイル対象のJARが見つからないようです。

これ読んだことがありますか?

http://docs.codehaus.org/display/MAVENUSER/Dependency+Scopes

それは述べています:

システム:この依存関係は、プロジェクトのライフサイクルのあるフェーズで必要ですが、システム固有です。このスコープの使用はお勧めしません。これは「高度な」種類の機能と見なされ、その使用のすべての影響を本当に理解している場合にのみ使用する必要があります。これは、実際に定量化することが不可能ではないにしても、非常に難しい場合があります。このスコープは、定義上、ビルドを移植性のないものにします。特定のエッジケースでは必要になる場合があります。システムスコープには、ローカルマシン上のこの依存関係の物理的な場所を指す要素が含まれます。したがって、リポジトリにない特定のローカルマシンに存在すると予想されるアーティファクトを参照するために使用されます。そのパスはマシンごとに異なる場合があります。systemPath要素は、そのパス内の環境変数を参照できます。たとえば、${JAVA_HOME}です。

したがって、これを使用する確かな理由がない限り、アーティファクトをリポジトリにデプロイして、他のアーティファクトと同じように参照する方がよいでしょうか。

于 2013-02-27T03:03:32.850 に答える