2015-08-26 139 views
0

在我的maven項目中,我有1個主模塊和2個模塊。它只在將兩個模塊添加到主pom.xml中的依賴關係時編譯並運行,否則我會收到編譯錯誤,指出找不到反射庫等。Maven父母和孩子們在Intellij

我該如何解決這個問題?

powercontrol.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>nl.nberlijn.powercontrol</groupId> 
    <artifactId>powercontrol</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0</version> 
    <modules> 
     <module>log</module> 
     <module>kernel</module> 
    </modules> 
    <dependencies> 
     <dependency> 
      <groupId>nl.nberlijn.powercontrol</groupId> 
      <artifactId>kernel</artifactId> 
      <version>1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>nl.nberlijn.powercontrol</groupId> 
      <artifactId>log</artifactId> 
      <version>1.0</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

kernel.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <parent> 
     <groupId>nl.nberlijn.powercontrol</groupId> 
     <artifactId>powercontrol</artifactId> 
     <version>1.0</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>kernel</artifactId> 
    <packaging>jar</packaging> 
    <dependencies> 
     <dependency> 
      <groupId>org.reflections</groupId> 
      <artifactId>reflections</artifactId> 
      <version>0.9.10</version> 
     </dependency> 
     <dependency> 
      <groupId>com.jcraft</groupId> 
      <artifactId>jsch</artifactId> 
      <version>0.1.53</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

log.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <parent> 
     <groupId>nl.nberlijn.powercontrol</groupId> 
     <artifactId>powercontrol</artifactId> 
     <version>1.0</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>log</artifactId> 
    <packaging>jar</packaging> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

回答

0

沒有更多的德泰在每個模塊的代碼中,很難說這是爲什麼。但是,通過將兩個模塊作爲依賴項放置在父POM中,它們及其傳遞依賴性將由兩個子模塊繼承。

我認爲你應該能夠通過從你的父POM中刪除依賴關係並添加依賴到你的log POM來解決這個問題,這取決於你的kernel模塊。

+0

它可能是在主(父)我也有一個Java代碼的問題?我應該爲(main/app)代碼創建一個新模塊嗎?我只是在閱讀和猜測! – nberlijn

+2

您的父模塊的「包裝」是「pom」。這意味着它不會從父模塊構建一個jar,僅用於您的子模塊。所以是的,任何Java代碼都應該放在你的一個子模塊中(如果需要的話,可以使用一個新模塊) – olambert