2013-05-05 4 views
8

Konwertuję mój projekt na maven. Widzę w pliku wojennym, że nie ma pliku klasy.Maven nie kompiluje klasy i nie ma plików klas w pliku wojennym

Poniżej znajduje się pom.xml i struktura projektu.

<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>RetailProducts</groupId> 
    <artifactId>RetailProducts</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <name>RetailProducts</name> 

    <dependencies> 

     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-api</artifactId> 
      <version>2.1.7</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-impl</artifactId> 
      <version>2.1.7</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
     </dependency> 
       <!-- Tomcat 6 need this --> 
     <dependency> 
      <groupId>com.sun.el</groupId> 
      <artifactId>el-ri</artifactId> 
      <version>1.0</version> 
     </dependency> 

    </dependencies> 

    <build> 
     <finalName>JavaServerFaces</finalName> 

     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.1</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.1.1</version> 
     <!-- <configuration> section added to pick up the WEB-INF/web.xml inside WebContent --> 
     <configuration> 
     <webResources> 
      <resource> 
       <directory>WebContent</directory> 
      </resource> 
     </webResources> 
     </configuration> 
    </plugin> 
     </plugins> 
    </build> 
</project> 


Struktura projektu

enter image description here

+1

downvoters Powołaj się na tym, czego downvoting więc mogę poprawić sobie – developer

Odpowiedz

11

Z mojego punktu widzenia struktury projektu nie jest tak Maven spodziewa.

W celu rozwiązania tego problemu należy wykonać następujące czynności:

  1. Najpierw zmień swój pakiet retail.web.mbean do main.java.retail.web.mbean (po przetworzyć pakiet będzie nadal nazywać się retail.web.mbean), stworzy to strukturę folderów niezbędną dla maven.
  2. Kliknij prawym przyciskiem myszy na projekcie, Maven> Zaktualizuj konfigurację projektu.

Po tym procesie będziesz mieć tę samą strukturę, którą miałeś przed rozpoczęciem projektu, ale maven będzie wiedział, gdzie znaleźć kod źródłowy.

Dodatkowo można utworzyć folder zasobów i foldery testowych o następującej strukturze:

Project 
    src 
    main 
     java 
     resources 
    test 
     java 
     resources 

Byłoby to średnia struktura projekt Maven.

+0

proszę można sprawdzić to pytanie zbyt http://stackoverflow.com/q/16383877/668970 – developer

14

Domyślnie Maven spodziewa źródła Java, aby być w src/main/java ale twój projekt ma struktura źródeł w src. Polecam, abyś zastosował się do układu standard Maven directory.

Jeśli nie chcesz tego zrobić, a następnie można użyć ustawienia sourceDirectory gromadzeniu jak powinno poniżej:

<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"> 
    ... 
    <build> 
    <sourceDirectory>${basedir}/src</sourceDirectory> 
    </build> 
</project> 
+0

Kiedy importowany mojego projektu maven w Eclipse to nie rozpoznaje go jako dynamicznego projektu internetowego, więc nie generuje klas. Kiedy dodałem ' $ {basedir}/src' w pom to wygenerował i zadziałało. Niesamowity !! – Oliver

+0

mój problem był z wersją java. Miałem 1.8.101 i musiałem zaktualizować 1.8.144, a następnie mógł rozpoznawać pliki źródłowe na src/main/java –

+0

: a dla katalogu testowego można dodać własny katalog np .: $ {basedir}/test

-2

można użyć następujące linie kodu w pom.xml zawierać pliki Java w wojnie które stworzyłeś. Bydefault wojna wyklucza pliki .java podczas pakowania.

<resources> 
    <resource> 
    <directory>src</directory> 
    <includes> 
    <include>**/*.java</include> 
    </includes> 
    </resource> 
</resources> 
+0

Po prostu wiesz, co zasugerowałeś. To postawi.pliki java w docelowym/klasach, które nie są tym, czego potrzebujesz. Najpierw chcesz je skompilować do plików .class. –