Comment pack de ressources dans un Projet Maven?
Je suis à la recherche pour la suggestion de mettre le fichier image de maven projet web. L'une des classes dans src/main/java besoin d'utiliser un fichier d'image. Mon problème est que, si j'ai mis l'image du fichier src/main/webapp/images ainsi que sous src/main/resources/Images puis l'application serveur ne peut pas trouver le chemin de l'exécution(où myeclipse peut ) parce que la guerre d'archives n'ont pas de chemin d'accès spécifié "src/main/webapp/images".
Ma question est: où dois-je placer le fichier image que mon projet peut le trouver sans le demander à toute erreur ou d'exception.
Je suis en utilisant
- D'Applications Web Java avec Mavenized falvour
- MyEclipse 10
- Serveur D'Application: JBoss 6
Actuellement j'ai suivantes dir structure
Structure De Répertoire Du Projet
-src/main/java
-- classes
-src/main/resources
-- applicationContext.xml
-src/main/resources/Images
-- myImage.png (target image)
-src/test/java
-- test classes
-src/test/resources
(nothing)
-src
-- main
--- webapp
--WEB-INF
---faces-config.xml
---web.xml
--Images
--OtherImages
--myImage.png( second place for image)
--Css
--Meta-INF
--login.jspx
--jsfPageType1
--page1.jspx
--jsfPageType2
--page2.jspx
-target
-pom.xml
Et pom.xml s'construire extrait de est comme suit
<build>
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
<outputDirectory>${basedir}/target/${project.artifactId}/classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<testResources>
<testResource>
<directory>${basedir}/src/test/resources</directory>
</testResource>
</testResources>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<optimize>true</optimize>
<useProjectReferences>true</useProjectReferences>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
<webResources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<directory>${basedir}/src/main/resources/Images</directory>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
et MyProject.la guerre dir structure
MyProject.war
--Images
---OtherImages
--Css
--Meta-INF
--login.jspx
--jsfPageType1
--page1.jspx
--jsfPageType2
--page2.jspx
--WEB-INF
--classes
---applicationContext.xml
---com(classes package)
---Images
----myImage.png
--lib
--web.xml
--faces-config.xml
Dans Maclasse je suis en train d'essayer d'accéder à l'image
1er essai
private static String PATH_TITLE_IMAGE = "src/main/resources/Images/myImage.png";
com.itextpdf.text.Image bckGrndImage = com.itextpdf.text.Image.getInstance(PATH_TITLE_PAGE_IMAGE);
2ème essai
private static String PATH_TITLE_IMAGE = "src/main/webapp/Images/myImage.png";
com.itextpdf.text.Image bckGrndImage = com.itextpdf.text.Image.getInstance(PATH_TITLE_PAGE_IMAGE);
comme ore a Dit que je devrais utiliser
MyClass.class.getResource("/images/image.jpg")
après l'ajout de la solution proposée (mais toujours pas de travail)
private static String PATH_TITLE_IMAGE = "Images/myImage.png";
URL url = MyClass.class.getResource(PATH_TITLE_IMAGE);
com.itextpdf.text.Image bckGrndImage = com.itextpdf.text.Image.getInstance(url);
Merci d'avance
si je lance l'application sur Myeclipse puis maclasse a propriété de chemin d'accès c'est à dire PATH = "src/main/webapp/Images/myimage.png"
OriginalL'auteur Rehman | 2011-11-15
Vous devez vous connecter pour publier un commentaire.
La manière suggérée à mettre vos ressources dans le
src/main/resources
Référence: L'ajout et le Filtrage des Ressources Web Externe
OriginalL'auteur Andrei Sfat
Il semble que votre problème est la manière dont vous lisez l'image. Vous ne pouvez pas (ou ne devrait pas) lecture de l'image à partir d'un Chemin. Le Chemin peut changer sur chaque système.
Vous avez besoin pour lire l'image depuis le classpath comme:
ou
Pour que cela fonctionne, le Dossier de l'image doit être dans le classpath. Maven va tout mettre dans le classpath, qui est sous la main/resources. Ainsi, thats où votre dossier d'images devrait être.
pourriez-vous liste comment la guerre de fichier de répertoire/fichier de structure)? Vous pouvez modifier votre question à insérer cette information.
J'ai oublié le principal /
j'ai essayé les deux, et dans les deux cas, l'application ne trouve pas le fichier image et le jette exception avec le message "Dossier/Monprojet/Images/myImage.png" n'est pas trouvé
s'il vous plaît montrer le contenu de votre fichier war et la source exacte de code pour le chargement de l'image dans la question, je pense que nous comprenons mal les uns des autres 🙂
OriginalL'auteur oers
Vous pouvez utiliser
maven-resources-plugin
de copier les choses à l'endroit désiré.quelque chose comme cela
EDIT:
basé sur vos commentaires ci-dessous, je pense que ce que vous avez besoin est un fichier de propriétés où vous maintenir chemin d'accès au dossier de ressources. Ce chemin va être un chemin absolu. En fonction de votre déploiement, vous modifier ce chemin d'accès dans le fichier de propriétés.
voir MODIFIER ci-dessus.
OriginalL'auteur Ravi Bhatt