Mam bardzo prosty projekt WAR i chcę umieścić katalog o nazwie META-INF
u góry folderu wyjściowego klasy, w którym znajdują się wszystkie skompilowane klasy Java. Używam Mavena, ale wygląda na to, że domyślnie Maven nie będzie zawierał niczego, co nie jest klasą Java. Więc ignoruje mój katalog META-INF
, który znajduje się na szczycie katalogu src
. Katalog META-INF
zawiera plik o nazwie persistence.xml
. Jakieś szybkie wskazówki, jak instruować Mavena, aby umieścił ten katalog i plik w folderze wyjściowym?Maven: Włączenie folderu META-INF do folderu klas
Odpowiedz
Będę pośrednio odpowiadać na twoje pytanie, mówiąc, że jeśli już zrobiłeś skok do Maven2 zdecydowanie polecam użycie Archetype Plugin. Korzystanie z archetypu webapp zapewni, że skończysz z kanoniczną strukturą katalogów. Każdy, kto spogląda na twoje źródło, natychmiast wie, gdzie jest wszystko i nie będzie żadnych wątpliwości, gdzie znajdują się twoje pliki.
Ogólnie rzecz biorąc, w przypadku projektu Maven opartego na języku Java pliki niebędące źródłami powinny znajdować się w podkatalogu projektu src/main/resources
. Zawartość tego katalogu resources
jest kopiowana do katalogu wyjściowego (domyślnie target/classes
) podczas fazy procesu procesu-zasobów.
W przypadku projektów Maven WAR jest to nieco bardziej skomplikowane: istnieje również katalog src/main/webapp
, w którym Maven spodziewa się znaleźć WEB-INF/web.xml
. Aby skompilować plik WAR, plik ten musi istnieć; inaczej, zobaczysz komunikat o błędzie, jak poniżej:
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
jako katalog WEB-INF
musi istnieć pod src/main/webapp
, polecam unikanie określając ją ponownie w src/main/resources
. Chociaż jest to całkowicie poprawne, a zawartość obu katalogów zostanie scalona, może to być mylące, jeśli plik jest zdefiniowany w obu. Zawartość src/main/resources
będzie miała pierwszeństwo, ponieważ zostaną skopiowane na wierzch zawartości z src/main/webapp
.
Kocham cię, człowieku! – willcodejavaforfood
Twój post rozwiązać mój błąd! Dzięki! Dla Ciebie! –
Tak więc mój, dobry przyjaciel, kumpel – myro
Daj poniższy wpis w pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<!--webappDirectory>/sample/servlet/container/deploy/directory</webappDirectory-->
<packagingExcludes>**/web.xml</packagingExcludes>
</configuration>
</plugin>
Włóż to do pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
Powinieneś dodać trochę meta-tekstu – keyser
wielkie pytanie, dzięki. –