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:
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?
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
@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