2013-02-15 143 views
13

我已經瀏覽了StackOverflow上的所有內容,但無法找到答案。我剛剛構建了一臺新機器,並且我有一些編譯和構建在以前的安裝上的項目。但我的新機器不會。一切似乎正在建設(沒有生成錯誤,包括正確的依賴項),但從我的項目實際的類文件(我寫的代碼)不包括在jar中。然後我創建了一個簡單的helloWorld項目,其中包含一些最小的POM文件,以查看問題是否仍然存在。我從命令行完成構建,以消除等式中的錯誤。Maven Build不包括jar文件中的.class文件

類代碼

package com.zoverge.utils; 

public class HelloWorld { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     String message = args[0]; 
     System.out.println(message); 
    } 

} 

我的POM文件

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.zoverge.utils</groupId> 
    <artifactId>helloworld</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0</version> 
    <name>Hello World</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
      <project.build.java.version>1.6</project.build.java.version> 
      <org.apache.maven.plugins.maven-compiler-plugin.version>2.5.1</org.apache.maven.plugins.maven-compiler-plugin.version>   
    </properties> 
    <build> 
     <plugins> 
      <!-- Maven will compile our source java classes using the "project.build.java.version" 
       specified --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>${org.apache.maven.plugins.maven-compiler-plugin.version}</version> 
       <configuration> 
        <source>${project.build.java.version}</source> 
        <target>${project.build.java.version}</target> 
       </configuration> 
      </plugin> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.3</version> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
      <archive> 
      <manifest> 
       <mainClass>com.zoverge.utils.HelloWorld</mainClass> 
      </manifest> 
      </archive> 
       <finalName>HelloWorld</finalName> 
       <appendAssemblyId>false</appendAssemblyId> 
     </configuration> 
     <executions> 
      <execution> 
      <id>make-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
<dependencies/> 
</project> 

產生的構建產生2個jar文件(如預期)的HelloWorld-1.0.jar和的HelloWorld.jar。這兩個jar都不包含HelloWorld.java的已編譯類文件。我認爲這對我的環境來說是一個問題,因爲對於在其他開發機器上運行良好的其他項目,這種行爲是相同的,但我似乎無法弄清楚其中的差異。我沒有訪問我以前的開發機器來比較配置。我的.m2/setting.xml基本上是空的。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
         http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
    <localRepository>${user.home}/.m2/repository</localRepository> 
    <interactiveMode/> 
    <usePluginRegistry/> 
    <offline/> 
    <pluginGroups/> 
    <servers/> 
    <mirrors/> 
    <proxies/> 
    <profiles/> 
    <activeProfiles/> 
</settings> 
+0

奇怪的是,用Maven 3.0.4爲我工作。 – 2013-02-15 20:52:09

+0

深入挖掘我的Maven安裝後,我發現了多個實例(3.0.3和2.2.1)。我需要清理這個,然後再試一次...... thx。 – 2013-02-15 21:04:07

+0

沒有運氣。我做了一個完整的卸載並重新安裝Maven並升級到最新的(3.0.4),我仍然得到一個沒有類文件的jar,現在清單沒有列出任何主類。 清單-版本:1.0 歸檔-版本:叢歸檔 創建-者:阿帕奇Maven的 內置者:johnblakie 內建的jdk:1.6.0_37 – 2013-02-15 23:06:58

回答

22

我發現我的問題。問題是文件夾結構。 Maven採用/ src/main/java /結構。我的結構是不同的,並沒有在POM.xml中重寫。匹配標準路徑或覆蓋POM.xml中的路徑解決了問題。

+1

非常感謝你 – ismail 2014-08-08 14:03:22

+0

哇,這真是我想念的愚蠢,但正是我的問題,謝謝! – 2016-01-21 21:07:54

+0

你可能想接受你的答案 – 2016-12-20 20:32:26

相關問題