[JAVA] Si les éléments du sous-module ne sont pas trouvés dans Play Framework

TL; DR

Si vous ne connaissez pas le chemin de l'élément dans Play Framework sbt "show playAllAssets" Est super pratique

sizer@sizle:~/hello-play-assets (master *+>)
$ sbt "show playAllAssets"
[info] Loading global plugins from /Users/sizer/.sbt/1.0/plugins
[info] Loading settings for project hello-play-assets-build from plugins.sbt ...
[info] Loading project definition from /Users/sizer/hello-play-assets/project
[info] Loading settings for project root from build.sbt ...
[info] Loading settings for project child from build.sbt ...
[info] Set current project to hello-play-assets (in build file:/Users/sizer/hello-play-assets/)
[info] child / playAllAssets
[info] 	List((public/,/Users/sizer/hello-play-assets/child/target/web/public/main))
[info] playAllAssets
[info] 	List((public/,/Users/sizer/hello-play-assets/target/web/public/main))
[success] Total time: 0 s, completed 2019/05/20 19:36:09
###
#Vous pouvez voir une liste de chemins d'accès aux ressources. cible/web/public/Cela semble être en gros.
###
$ tree target/web/public/main/
target/web/public/main/
├── images
│   └── favicon.png
├── javascripts
│   └── main.js
├── lib
│   └── child
│       ├── images
│       │   ├── favicon.png
│       │   └── image_in_child.jpg
│       ├── javascripts
│       │   └── main.js
│       └── stylesheets
│           └── main.css
└── stylesheets
    └── main.css

8 directories, 7 files
###
# lib/{moduleName}/Il semble que vous puissiez l'obtenir si vous le spécifiez dans les images
###

Contexte

Je développe une application web avec Play Framework (Java). Les parties communes sont découpées en modules enfants. Je souhaite appeler un actif dans un module enfant. → Je ne le trouve pas ...

├── build.sbt
├── child #=>C'est la partie commune
│   ├── build.sbt
│   ├── app
│   ├── conf
│   └── public #=>Mettez l'image ici
├── conf
│   ├── application.conf
│   ├── logback.xml
│   └── routes
├── project
│   ├── build.properties
│   ├── plugins.sbt
└── public
    ├── images
    ├── javascripts
    └── stylesheets

`

Lire la documentation officielle

When you package your application, all assets for the application, including all sub projects, are aggregated into a single jar How are public assets packaged? - playframework.com

Ce sera un fichier jar comprenant des sous-projets. Ouais

Mettez-le dans le dossier public et accédez-y avec ʻAssets.at (file: String) ou ʻAssets.versioned (path =" / public ", file: Asset).

→ Je suis accro à ne pas pouvoir accéder

Attrapez le NUMÉRO officiel

J'ai trouvé un PROBLÈME qui ne peut pas lire les actifs du module enfant!

Did you add the sbt web plugin or the play plugin (which transitively adds the sbt web plugin) to the subproject? Assets are now no longer considered classpath resources ... If you add the play plugin, you can put assets in the assets directory or the public directory. If you add the sbt web plugin, then you'll have to add the assets to the default directories for sbt-web, src/main/assets or src/main/public. https://github.com/playframework/playframework/issues/2944#issuecomment-44243541

Avez-vous ajouté le plug-in sbt-web ou le plug-in de jeu au module enfant? Sinon, les actifs n'entreront pas dans le chemin de classe

(Ecrivez cela dans la documentation ...)

If you add the play plugin, you can put assets in the assets directory or the public directory. If you add the sbt web plugin, then you'll have to add the assets to the default directories for sbt-web, src/main/assets or src/main/public. https://github.com/playframework/playframework/issues/2944#issuecomment-44243541

Si vous installez le plugin play, lisez le répertoire des ressources ou le répertoire public. Pour le plug-in sbt-web, c'est soit src / main / assets soit src / main / public.

(C'est dans la documentation ...)

Could you run show play-all-assets, and see if the assets are in there? Also useful may be to run show childproject/play-prefix-and-assets, and see if the child project assets are in there. https://github.com/playframework/playframework/issues/2944#issuecomment-44359790

Si vous exécutez show play-all-assets, vous trouverez l'emplacement des assets dans le projet enfant.

(Ce genre de chose est un document ...)

Réalisé

Au fait

- show play-all-assets
+ show playAllAssets

était

sizer@sizle:~/hello-play-assets (master *+>)
$ sbt "show playAllAssets"
[info] Loading global plugins from /Users/sizer/.sbt/1.0/plugins
[info] Loading settings for project hello-play-assets-build from plugins.sbt ...
[info] Loading project definition from /Users/sizer/hello-play-assets/project
[info] Loading settings for project root from build.sbt ...
[info] Loading settings for project child from build.sbt ...
[info] Set current project to hello-play-assets (in build file:/Users/sizer/hello-play-assets/)
[info] child / playAllAssets
[info] 	List((public/,/Users/sizer/hello-play-assets/child/target/web/public/main))
[info] playAllAssets
[info] 	List((public/,/Users/sizer/hello-play-assets/target/web/public/main))
[success] Total time: 0 s, completed 2019/05/20 19:36:09
$ tree target/web/public/main/
target/web/public/main/
├── images
│   └── favicon.png
├── javascripts
│   └── main.js
├── lib
│   └── child
│       ├── images
│       │   ├── favicon.png
│       │   └── image_in_child.jpg
│       ├── javascripts
│       │   └── main.js
│       └── stylesheets
│           └── main.css
└── stylesheets
    └── main.css

8 directories, 7 files

ʻAssets.at ("lib / child / images / youfile.jpg)` était à la place.

Qu'est-ce que lib / {moduleName}, veuillez écrire une telle chose dans le document!

Impressions

Cadre hostile de la documentation officielle Sérieusement: merde:

PS

J'ai créé ISSUE avec lib / {moduleName} comme préfixe. : thumbsup: s'il vous plaît Il peut être approprié de le mettre sur sbt-web, mais faites-moi savoir qui vous êtes.

https://github.com/playframework/playframework/issues/9331

Recommended Posts

Si les éléments du sous-module ne sont pas trouvés dans Play Framework
Si les éléments du sous-module ne sont pas trouvés dans Play Framework
Classe principale Spring-Boot introuvable
Fichier de classe HttpServletRequest introuvable
Vérifiez si les transactions Ethereum ne sont pas incluses dans le bloc
Que faire si les modifications ne sont pas reflétées dans le fichier manifeste JAR
Le saut de ligne du texte saisi n'est pas affiché dans la vue
Mémo qui passe à l'écran de connexion si vous n'êtes pas connecté avec l'appareil
Fonction de validation dans Play Framework
Que faire lorsque les modifications du servlet ne sont pas reflétées
Juger si les chaînes de caractères à comparer sont les mêmes en Java
Erreur dans ./gradlew: symbole introuvable
Quelles sont les règles de JUnit?
Que faire lorsque le préfixe c n'est pas lié dans JSP
Fonction d'authentification avec Play Framework [Restrictions d'accès]
ne doit pas retourner dans l'instruction for
Construction de l'environnement Play Framework 2.6 (Java) avec Eclipse
Ajouter si non dans l'ensemble, message d'erreur si
Si le raccourci Ctrl + ne fonctionne pas dans Eclipse, la désactivation de Welcome peut aider
Lorsque j'exécute la commande source dans le Makefile d'Ubuntu, j'obtiens "source: command not found"