Comment organiser sont projet java pour ne pas dupliquer le code
-
Salut les gens. Je savais pas quoi mettre comme titre clair^^.
J’ai une question sur le java. J’utilise IntelliJIDEA comme ide.Dans ce projet java https://github.com/trentech/ProjectCore/ le mec déclare les infos du plugin dans le build.gradle et les valeurs sont stocké dans le gradle.properties et son plugin a une class qui récupère les infos Resource.java quand il en a besoin dans son code.
Ainsi dans la main class du plugin il utilise la class Resource pour déclarer sont plugin ce qui évite de dupliquer les informations:
@Plugin(id = Resource.ID, name = Resource.NAME, version = Resource.VERSION, description = Resource.DESCRIPTION, authors = Resource.AUTHOR, url = Resource.URL)
Je trouve cette façon de faire bien mieux, mais ça ne fonctionne pas chez moi. Il doit manquer quelque chose mais je ne vois pas qu’est ce que cela peut être.
Quand je log cela me donne:Resource: @project.pluginName@
Donc quelqu’un qui connait bien le Java serait comment faire ?
Edit:
Ce projet utilise le même système:
https://github.com/NucleusPowered/Nucleus/
Je vois pas ce que j’ai fait de mal -
Personne a d’idées ?
-
Il faut indiquer les remplacements dans le fichier
build.gradle
https://github.com/trentech/ProjectCore/blob/7.x/build.gradle#L19
Et mettre le plugin blossom (voir tout en haut du fichier). -
C’est ce que j’ai fait. Ce que je comprends pas c’est qu’une fois compilé et démarrer sur mon serveur pubic… cela fonctionne:
[19:27:25] [Server thread/INFO] [geckocore]: Resource TEST:
[19:27:25] [Server thread/INFO] [geckocore]: Resource TEST: TestValeur_
[19:27:25] [Server thread/INFO] [geckocore]: Resource ID: geckocore
[19:27:25] [Server thread/INFO] [geckocore]: Resource NAME: GeckCore
[19:27:25] [Server thread/INFO] [geckocore]: Resource VERSION: 0.0.3
[19:27:25] [Server thread/INFO] [geckocore]: Resource DESCRIPTION: Geck Core DescriptionMais en debug j’obtiens:
[19:22:53] [Server thread/INFO] [geckocore]: Resource TEST:
[19:22:53] [Server thread/INFO] [geckocore]: Resource TEST: @test@
[19:22:53] [Server thread/INFO] [geckocore]: Resource ID: @id@
[19:22:53] [Server thread/INFO] [geckocore]: Resource NAME: @name@
[19:22:53] [Server thread/INFO] [geckocore]: Resource VERSION: @version@
[19:22:53] [Server thread/INFO] [geckocore]: Resource DESCRIPTION: @description@
[19:22:53] [Server thread/INFO] [geckocore]: Resource AUTHOR: @author@
[19:22:53] [Server thread/INFO] [geckocore]: Resource URL: @url@
[19:22:53] [Server thread/INFO] [geckocore]: Resource TESTMême avec l’annotation cela compile et fonctionne en public alors qu’avant nan:
@Plugin(id = Resource.ID, name = Resource.NAME, version = Resource.VERSION, description = Resource.DESCRIPTION, authors = Resource.AUTHOR, url = Resource.URL)Mais comme toujours en debug cela fonctionne pas surtout si je mets l’annotation:
[19:39:45] [Server thread/WARN] [FML]: Missing English translation for FML: assets/fml/lang/en_us.lang [19:39:45] [Server thread/WARN] [FML]: Missing English translation for spongeapi: /G:/Sponge/SpongeForge/out/production/SpongeForge/assets/spongeapi/lang/en_us.lang [19:39:45] [Server thread/WARN] [FML]: Missing English translation for spongeforge: /G:/Sponge/SpongeForge/out/production/SpongeForge/assets/spongeforge/lang/en_us.lang [19:39:45] [Server thread/WARN] [FML]: Missing English translation for admintool: /G:/Sponge/SpongeForge/out/production/AdminToolV2/assets/admintool/lang/en_us.lang [19:39:45] [Server thread/WARN] [FML]: Missing English translation for @id@: /G:/Sponge/SpongeForge/out/production/GeckoCore/assets/@id@/lang/en_us.lang [19:39:45] [Server thread/WARN] [FML]: Missing English translation for simpledestroyblock: /G:/Sponge/SpongeForge/out/production/SimpleDestroyBlock/assets/simpledestroyblock/lang/en_us.lang [19:39:45] [Server thread/WARN] [FML]: Missing English translation for compass: /G:/Sponge/SpongeForge/out/production/Compass/assets/compass/lang/en_us.lang [19:39:45] [Server thread/WARN] [FML]: Missing English translation for home: /G:/Sponge/SpongeForge/out/production/Home/assets/home/lang/en_us.lang [19:39:45] [Server thread/FATAL] [FML]: net.minecraftforge.fml.common.MissingModsException: Mod home (Home) requires [geckocore@0.0.3] [19:39:45] [Server thread/ERROR]: Encountered an unexpected exception net.minecraftforge.fml.common.MissingModsException: Mod home (Home) requires [geckocore@0.0.3] at net.minecraftforge.fml.common.Loader.sortModList(Loader.java:264) ~[Loader.class:?] at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:570) ~[Loader.class:?] at net.minecraftforge.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:98) ~[FMLServerHandler.class:?] at net.minecraftforge.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:333) ~[FMLCommonHandler.class:?] at net.minecraft.server.dedicated.DedicatedServer.init(DedicatedServer.java:128) ~[DedicatedServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:552) [MinecraftServer.class:?] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
Il doit manquer quelque chose en debug, mais je trouve pas quoi
-
Oui le remplacement ne se fait qu’à la compilation.
C’est donc normal d’avoir ces valeurs en debug. -
dans le code je sais pas si c’est grave si ça fonctionne pas en débug a la limite mais l’annotation empêche de démarrer avec ce système, je devrais donc la remplacé a la compilation ce qui au final fait perdre un peut de l’intérêt je trouve.
-
up.
On peut vraiment pas faire quelque chose ? -
Il ne me semble pas
-
Je suis deg, devoir modifier son code juste pour démarrer en debug ou compiler c’est chiant surtout que quand je vois d’autre code je les vois pas avec certain bout commenté comme je dois faire justement