2013-05-05 14 views
8

iam che converte il mio progetto in Maven. Vedo in file di guerra non esiste un file di classe disponibile.Maven non sta compilando la classe e non ci sono file di classe nel file di guerra

Di seguito è il pom.xml e la struttura del progetto.

<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> 


Struttura del progetto

enter image description here

+1

downvoters preghiamo di ricordare per quello che stai downvoting così posso correggermi – developer

risposta

11

Dal mio punto di vista la struttura del progetto non è come Maven si aspetta.

Al fine di risolvere il problema procedere come segue:

  1. Prima rinominare il pacchetto retail.web.mbean-main.java.retail.web.mbean (dopo il processo la tua il pacchetto sarà ancora denominato retail.web.mbean), ciò creerà la struttura della cartella necessaria per l'utente.
  2. Fare clic con il tasto destro del mouse sul progetto, Maven> Aggiorna configurazione progetto.

Dopo questo processo avremo la stessa struttura che avevate prima di iniziare il progetto ma maven saprà dove trovare il codice sorgente.

Inoltre, è possibile creare una cartella delle risorse e le cartelle di prova con la seguente struttura:

Project 
    src 
    main 
     java 
     resources 
    test 
     java 
     resources 

Questa sarebbe la struttura standard di progetto Maven.

+0

prega è possibile controllare questa domanda troppo http://stackoverflow.com/q/16383877/668970 – developer

14

Per Maven impostazione predefinita prevede le sorgenti Java di essere in src/main/java ma la vostra struttura del progetto ha le fonti in src. Ti raccomando di aderire al layout standard Maven directory.

Se non si vuole fare, che è possibile utilizzare l'impostazione sourceDirectory accumulo come dovrebbe di seguito:

<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

Quando ho importato il mio progetto Maven in Eclipse esso non l'ho riconosciuto come un progetto Web dinamico, quindi non stava generando le classi. Quando ho aggiunto ' $ {basedir}/src' nel pom generato e ha funzionato. Stupefacente !! – Oliver

+0

il mio problema era con la versione java. Avevo 1.8.101 e dovevo aggiornarlo a 1.8.144, quindi Maven poteva riconoscere i file sorgenti ai suggerimenti src/main/java –

+0

: e per la directory di test, si poteva aggiungere la propria directory es: $ {basedir}/test

-2

È possibile utilizzare le seguenti righe di codice in pom.xml per includere i file java in guerra che tu hai creato. Per impostazione predefinita, la guerra esclude i file .java durante l'imballaggio.

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

Solo così sai cosa hai suggerito. Questo metterà.file java nella destinazione/classi che non è quello che vuoi. Prima devi costruirli in file .class. –

Problemi correlati