7
votes

Comment emballer des ressources dans un projet Maven?

Je cherche une suggestion dans la mise en place du projet Web Maven Maven Maven. Une des classes sous SRC / Main / Java doit utiliser un fichier image. Mon problème est, si je mettez un fichier image sous SRC / Main / WebApp / Images ainsi que sous SRC / Main / Ressources / Images, Application Server ne trouve que le chemin d'exécution (où la myeclipse peut) car les archives de guerre n'ont pas de chemin spécifié "SRC / Main / WebApp / Images".

Ma question est où dois-je placer le fichier image que mon projet peut le trouver sans demander une erreur ou une exception. P>

J'utilise p>

  • Application Web Java avec Mavenized Falvour Li>
  • MYECLIPSE 10 LI>
  • Server d'application: JBoss 6 LI> ul>

    Actuellement, j'ai à la suite de la structure de la Dir P>

    Structure du répertoire de projet EM> P>

        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);  
    


2 commentaires

Comment obtenez-vous / trouvez-vous l'image dans votre programme?


Si j'exécute une application sur Myeclipse, MyClass a une propriété de chemin I.e. chemin = "src / main / webapp / images / myImage.png"


3 Réponses :


14
votes

Le répertoire de ressources par défaut pour tous les projets Maven est src / main / ressources code> strong> qui finira par cible / classes et dans Web-Inf / Classes dans la guerre. La structure de répertoire sera préservée dans le processus. p>

.
 |-- pom.xml
 `-- src
     `-- main
         |-- java
         |   `-- com
         |       `-- example
         |           `-- projects
         |               `-- SampleAction.java
         |-- resources
         |   `-- images
         |       `-- sampleimage.jpg
         `-- webapp
             |-- WEB-INF
             |   `-- web.xml
             |-- index.jsp
             `-- jsp
                 `-- websource.jsp


0 commentaires

1
votes

Il semble que votre problème soit la façon dont vous lisez l'image. Vous ne pouvez (ou ne devrait pas) lire l'image d'un chemin. Le chemin pourrait changer sur chaque système.

Vous devez lire l'image de la classe de classe, comme: xxx

ou xxx

pour que cela fonctionne, Le dossier d'image doit être sur la classe de classe. Maven mettra tout dans la classe de classe, qui est sous Main / Ressources. Donc c'est là où votre dossier d'image devrait être.


4 commentaires

J'ai changé de code sur myclass.class.getresource ("images / myImage.png"); Mais il est toujours incapable de trouver un chemin ou une URL.


Pourriez-vous indiquer comment le fichier de guerre a look la structure du répertoire / des fichiers)? Vous pouvez modifier votre question pour insérer ces informations.


J'ai essayé les deux et dans les deux cas, l'application ne trouve pas de fichier image et jette une exception avec le message "ProjectPath / myProject / images / myImage.png" introuvable.


Veuillez afficher le contenu de votre fichier de guerre et le code source exact pour charger l'image dans la question, je pense que nous nous mal compris les uns les autres :)



1
votes

Vous pouvez utiliser maven-ressources-plugin pour copier des éléments à l'emplacement souhaité.

quelque chose comme ça xxx

EDIT: Basé sur votre commentaire ci-dessous, je pense que ce dont vous avez besoin est un fichier de propriétés où vous maintenez un chemin d'accès au dossier Ressources. Ce chemin sera un chemin absolu. En fonction de votre déploiement, vous modifiez ce chemin dans le fichier de propriétés.


1 commentaires

Avec cette suggestion, je peux faire une image de SRC / Main / Ressources / Images en Guerre / Images. Mais pouvez-vous s'il vous plaît spécifier comment puis-je y accéder si je veux exécuter une myclass via un test d'unité. Je veux dire comment puis-je accéder à cette image si j'aime exécuter une application dans Myeclipse au lieu d'exécuter sur Application Server. Merci