私の問題は、 maven コンパイルの失敗に似てい ますが、解決策はありません。
A は B の依存関係です。Windows 7 (私の開発マシン) と Linux (AWS EC2 インスタンス) の両方で A を正常にコンパイル、テスト、パッケージ化、およびインストールできます。Windows 7 で B をコンパイル、テスト、パッケージ化、およびインストールすることもできます。ただし、Linux で B をコンパイルしようとすると、maven で「シンボルが見つかりません」というエラーが表示されます。
# mvn clean package install
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building xxxxx-api Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ xxxxx-api ---
[INFO] Deleting /secure-mnt/xxxxx-api/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ xxxxx-api ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 5 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ xxxxx-api ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 20 source files to /secure-mnt/xxxxx-api/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /secure-mnt/xxxxx-api/src/main/java/com/company/util/Logging.java:[21,13] cannot find symbol
symbol: class CryptoLogging
[ERROR] /secure-mnt/xxxxx-api/src/main/java/com/company/util/Logging.java:[32,39] cannot find symbol
symbol: method getLogger(java.lang.String)
location: class com.company.util.Logging
[INFO] 2 errors
.....
両方のシステムに同じバージョンの Java (1.7.0_25) と Maven (3.0.5) がインストールされており、どちらも Git の同じソース コード バージョンを使用しています。
実行mvn dependency:list
しても警告は表示されません。プロジェクト A jar は Linux サーバーのローカル m2 リポジトリにあり、利用可能なクラスとメソッドがあります。
Maven が Java コンパイラーに Linux 上の Project A jar を認識させないように思われますが、その理由はわかりません。Maven が Java クラスパスを正しく指定できていない可能性はありますか?
試したりテストしたりする提案はありますか?
関連する場合:
# mvn -version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 13:51:28+0000)
Maven home: /usr/local/apache-maven/apache-maven-3.0.5
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: /usr/java/jdk1.7.0_25/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.4.48-45.46.amzn1.x86_64", arch: "i386", family: "unix"
誰かが POM を確認するように頼むと確信しているので、ここにプロジェクト B の関連部分を示します。依存関係について特別なことはまったくありません。
<dependencies>
<!-- For Project A. -->
<dependency>
<groupId>com.company.projectA</groupId>
<artifactId>company-projectA</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- For RESTful services. -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.2</version>
</dependency>
<!-- For testing. -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
助けてくれてありがとう。