Pourquoi maven ne copie pas les fichiers de propriétés pendant le processus de construction?
Rien, j'ai trouvé a été en mesure de m'aider à résoudre ce un cas spécifique. J'ai récemment changé de plain old java web app projet (de travail) à un maven projet web. J'ai le runtime exception:
java.util.MissingResourceException: Can't find bundle for base name com.myapp.config, locale en
J'utilise Netbeans pour créer un JSF 2.0, Spring, Hibernate et web app. J'ai la structure de répertoire suivante:
src\main\java\com\monappli Contient config.propriétés
src\main\resources Videcible\myapp\WEB-INF\classes\com\monappli Contient compilé les fichiers de classe sans config.propriétés
src\main\java\com\monappli Contient config.propriétés
Inspection de la GUERRE de fichiers dans le dossier cible ne montre pas de signe de le fichier de propriétés, donc c'est comme si le Maven build plug-in n'est pas de copier sur les propriétés des fichiers. Je sais que c'est une marque que vous pouvez placer à l'intérieur de la pom mais il ne fonctionne pas pour moi. Le lien ci-dessous mentionne que le dossier de ressources (vide pour moi) a de son contenu inclus lors de la compilation, mais si c'est le cas, comment voulez-vous faire à partir de Netbeans? Je veux juste le fichier de propriétés à être emballé avec ma guerre de sorte qu'il est accessible lorsqu'il est déployé sur le serveur.
http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html
pom.xml:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myapp</groupId>
<artifactId>myapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>myapp</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>java.net</id>
<name>Repository hosting the Java EE 6 artifacts</name>
<url>http://download.java.net/maven/2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-hibernate3</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>net.authorize</groupId>
<artifactId>java-anet-sdk</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.15</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</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>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
<finalName>${artifactId}</finalName>
</build>
<profiles>
<profile>
<id>endorsed</id>
<activation>
<property>
<name>sun.boot.class.path</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!-- javaee6 contains upgrades of APIs contained within the JDK itself.
As such these need to be placed on the bootclasspath, rather than classpath of the
compiler.
If you don't make use of these new updated API, you can delete the profile.
On non-SUN jdk, you will need to create a similar profile for your jdk, with the similar property as sun.boot.class.path in Sun's JDK.-->
<compilerArguments>
<bootclasspath>${settings.localRepository}/javax/javaee-endorsed-api/6.0/javaee-endorsed-api-6.0.jar${path.separator}${sun.boot.class.path}</bootclasspath>
</compilerArguments>
</configuration>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>6.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<properties>
<netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
</properties>
source d'informationauteur Nicholas22j | 2011-04-03
Vous devez vous connecter pour publier un commentaire.
Qu'est-ce que votre projet de construction de chemin d'accès configuré pour être dans Netbeans? Vous pouvez essayer de changer l'
src/main/webapp/WEB-INF/classes
. De cette façon, les fichiers de classe compilée à partir de votresrc/main/java
dossier et toutes les ressources dont vous disposez en vertusrc/main/resources
doit obtenir inclus dans le générés GUERRE. Vous pourrez ensuite accéder à votre config.les propriétés de fichier si vous le placez sous lesrc/main/resources
dossier.Vous pouvez également examiner les
includes
sections dans votre pom.xml et vous assurer que vous n'êtes pas accidentellement à l'exclusion de quelque chose (si vous l'avez explicitement comprennent certaines choses, vous êtes susceptible implicitement à l'exclusion de tout le reste).Maven ne copie pas les ressources de la java de la source de l'arborescence par défaut, mais vous pouvez obtenir le faire en ajoutant ceci à votre pom.xml:
Assurez-vous d'exclure les fichiers source java.
De http://www.ninthavenue.com.au/how-to-change-mavens-default-resource-folder
Essayez de mettre votre config.propriétés src\main\ressources\com\myapp. J'ai pu le tester sur un projet local. Je suis l'exécution de Maven 3.0.2.
Créé un mvn exemple de projet avec la webapp archétype:
Créé un répertoire src/main/resources/com/foo et de mettre un truc.fichier de propriétés en vertu de l'.
Couru un build:
Puis, lors de la recherche dans le répertoire cible, le foo.fichier de propriétés s'affiche:
Vous pouvez essayer ces étapes sur votre machine. Si cela fonctionne, puis commencer à essayer de simplifier votre POM ci-dessus par la suppression de choses d'elle pour voir si elle commence à travailler. D'essai et d'erreur n'est pas drôle, mais je ne vois pas tout ce qui précède que doivent être les casser.