2013-02-15 9 views
13

Przeszukałem wszystko, co mogę znaleźć na StackOverflow i nie mogłem znaleźć odpowiedzi. Właśnie zbudowałem nową maszynę i mam projekty dobrze skompilowane i zbudowane na wcześniejszych instalacjach. Ale moja nowa maszyna tego nie zrobi. Wydaje się, że wszystko się poprawnie buduje (brak błędów kompilacji, poprawnie zawarte zależności), ale rzeczywiste pliki klas (kod napisałem) z mojego projektu nie są zawarte w słoiku. Następnie utworzyłem prosty projekt helloWorld z pewnym minimalnym plikiem POM, aby zobaczyć problem nadal istnieje. Zrobiłem kompilację z wiersza poleceń, aby usunąć z równania zaćmienie.Maven Build nie zawiera pliku .class w słoju

Kod klasy

package com.zoverge.utils; 

public class HelloWorld { 

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

} 

Mój plik 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> 

Powstały build produkuje 2 pliki jar (zgodnie z oczekiwaniami) helloworld-1.0.jar i HelloWorld.jar. Ani jar zawiera skompilowany plik klasy dla HelloWorld.java. Myślę, że to musi być problem z moim środowiskiem, ponieważ takie zachowanie jest takie samo w przypadku innych projektów, które działały dobrze na innych urządzeniach, ale nie potrafię zrozumieć różnicy. Nie mam dostępu do mojej poprzedniej maszyny dev, aby porównać konfigurację. Mój plik .m2/setting.xml jest w zasadzie pusty.

<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

Dziwne, działa u mnie z Maven 3.0.4. –

+0

Po głębszym zagłębieniu się w moją instalację maven znalazłem wiele instancji (3.0.3 i 2.2.1). Muszę to posprzątać i spróbować jeszcze raz ... thx. –

+0

Bez powodzenia. Zrobiłem kompletną dezinstalację i przeinstalowałem Mavena i zaktualizowałem ją do najnowszej wersji (3.0.4) i nadal otrzymuję jar bez plików klasowych, a teraz manifest nie ma na liście głównej klasy. Manifest-Version: 1.0 Archiver-Version: Splot Archiver Utworzono-By: Apache Maven Wbudowana Przez: johnblakie Build-JDK: 1.6.0_37 –

Odpowiedz

22

Znalazłem mój problem. Problem polegał na strukturze folderów. Maven przyjmuje strukturę/src/main/java /. moja struktura była inna i nie została zmieniona w POM.xml. dopasowanie standardowej ścieżki lub przesłanianie ścieżki w POM.xml naprawiło problem.

+1

bardzo dziękuję – ismail

+0

wow, to było tak głupie, że nie mogę przegapić, ale był dokładnie mój problem, dzięki! –

+0

Możesz zaakceptować swoją odpowiedź –

Powiązane problemy