2012-07-06 18 views
10

Ho un problema molto strano con Maven e Eclipse WTP. Ho un progetto multi-modulo, chiamiamolo project. Consiste di due moduli project-base e project-web. Ho abilitato la risoluzione dello spazio di lavoro (e funziona bene con molti altri progetti Maven molto simili).Perché il plug-in WTP distribuisce una dipendenza Maven come una cartella, invece di un jar?

project-base è una dipendenza di project-web ed è normalmente distribuito come file jar. Ma per diversi giorni, ma continua ad essere distribuito come una cartella di classe nel mio Tomcat locali, come potete vedere qui: Dependency deployed as folder, not as jar

Pertanto, il mio Tomcat non riconosce nessuno dei miei file di classe in là, perché si aspetta che essere vasetti, non cartelle. Il suffisso -tests deriva dalla necessità di avere il test dalla base nel mio progetto web. Non penso che questo sia il problema.

project-web ha tre dipendenze risolte dallo spazio di lavoro. Due di questi sono distribuiti correttamente, come jar, ma il terzo no. pom.xml

project-base 's è mostrato qui:

<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> 
    <parent> 
     <artifactId>project</artifactId> 
     <groupId>com.company.project</groupId> 
     <version>4.0.0</version> 
    </parent> 
    <artifactId>project-base</artifactId> 
    <name>projectBase</name> 
    <packaging>jar</packaging> 

    <properties> 
     <project.build.sourceEncoding>windows-1251</project.build.sourceEncoding> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.3.2</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>jar</goal> 
          <goal>test-jar</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-site-plugin</artifactId> 
       <version>3.0</version> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-project-info-reports-plugin</artifactId> 
       <version>2.4</version> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

La dipendenza project-base come viene definito in project-web assomiglia a questo:

<dependency> 
    <groupId>com.company.project</groupId> 
    <artifactId>project-base</artifactId> 
    <version>${project.version}</version> 
</dependency> 

<dependency> 
    <groupId>com.company.project</groupId> 
    <artifactId>project-base</artifactId> 
    <version>${project.version}</version> 
    <type>test-jar</type> 
    <scope>test</scope> 
</dependency> 

Non ho un idea del perché uno la dipendenza è distribuita in un modo così strano e non so come risolvere questo problema. Ho pulito i progetti, il tomcat, ho ridistribuito il progetto web, cancellato tutto il mio repository Maven, controllato l'intero progetto da VCS, nulla ha aiutato.

Cosa potrebbe fare in modo che Eclipse WTP distribuisca questa dipendenza come cartella anziché come file jar?

+0

Anche se non spiega ** perché **, [questa domanda] (http://stackoverflow.com/questions/8944278/m2eclipse-and-or-wtp-not-packaging-a-dependency-correctly) fornisce un lavoro che ci ha aiutato – chrisbunney

+0

@chrisbunney Grazie per l'informazione! Ho provato il trucco, ma non ha funzionato per me. Ho rimosso tutti i file specifici di Eclipse e lasciato che Maven li rigeneri, ma la situazione era invariata. – guerda

risposta

0

Alla fine ho risolto il mio problema: ho avuto problemi con la sezione delle proprietà Deployment Assembly per il progetto project-base. Non potevo salvarlo, come diceva Eclipse, la pagina corrente contiene errori.

Ho quindi esaminato il file delle impostazioni .settings/org.eclipse.wst.common.component. Era completamente vuoto (non so perché). Ho poi aggiunto il seguente blocco:

<?xml version="1.0" encoding="UTF-8"?> 
<project-modules id="moduleCoreId" project-version="1.5.0"> 
    <wb-module deploy-name="project-base"> 
     <wb-resource deploy-path="/" source-path="/src/main/java"/> 
     <wb-resource deploy-path="/" source-path="/src/main/resources"/> 
    </wb-module> 
</project-modules> 

Dopo questo, la pagina delle impostazioni è accessibile di nuovo e il vaso è montata correttamente. Anche la risoluzione dello spazio di lavoro funziona.

2

Stavo solo avendo lo stesso problema. L'aggiornamento di m2e alla versione 1.2 lo ha risolto.

3

Ho risolto il problema eliminando la dipendenza nella pagina delle impostazioni del progetto "Deployment assembly" e aggiungendola di nuovo.

+0

Grazie per il suggerimento. Questo non ha funzionato per me, perché non potevo nemmeno aprire questa pagina delle impostazioni esatte. Vedi la mia risposta per i dettagli. – guerda

+0

Questo ha funzionato per me .... che bug fastidioso. Il mio precedente lavoro era copiare/incollare manualmente il jar nella cartella di distribuzione lib: / – Selwyn

0

Se questa cartella è un JAR esploso (quindi è come un file JAR, ma appare come una cartella, non è archiviato), nel mio caso si trattava di un problema di connettore del server.

Sebbene io usi JBoss anziché Tomcat, questo potrebbe essere utile per gli altri che hanno difficoltà con questo problema.

A condizione di disporre degli ultimi strumenti JBoss installati su Eclipse, è possibile fare doppio clic sul server nella vista Server per aprire le impostazioni.

Su scheda Distribuzione, è possibile selezionare Zip modulo Sì/No per ogni progetto. Quando ho selezionato SÌ per i miei file jar di utilità, JBoss ha quindi distribuito la dipendenza come un normale file JAR anziché una cartella.

Problemi correlati