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
###
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
`
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
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 ...)
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!
Cadre hostile de la documentation officielle Sérieusement: merde:
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