Maven項目經常會有多個profile,可以方便在編譯時指定profile。 如果有多個profile,idea 在打開工程后默認配置可能會有些問題。
例如:
最近在編譯一個項目:https://github.com/JoshRosen/hive
編譯命令使用:
mvn clean install -gs /xx/maven-settings.xml -Phadoop-2 -DskipTests
編譯成功后使用idea打開工程,但是有類報錯。
HiveConf.java 的 import org.apache.hadoop.conf.Configuration; 報錯: Configuration找不到。
經過分析發現, hive的maven工程對hadoop的依賴有兩個profile。
<profiles>
<profile>
<id>hadoop-1</id>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>${hadoop-20S.version}</version>
<optional>true</optional>
</dependency>
</dependencies>
</profile>
<profile>
<id>hadoop-2</id>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop-23.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>${hadoop-23.version}</version>
<optional>true</optional>
</dependency>
</dependencies>
</profile>
第一個為1.2.1的版本,第二個為2.6的版本。編譯時指定的是-Phadoop-2
但是idea打開時不知道要選擇哪個profile,編譯器尋找類時,默認選擇第一個。所以此時會報錯。
解決方法:打開idea mven 配置手動勾選profile。

