L'ajout de classpath entrées à l'aide de Gradle Demande du plugin
Je suis en utilisant Gradle de l'Application plugin pour générer de l'installation pour une application java autonome. J'ai un fichier de configuration que je dois mettre dans le classpath mais je n'arrive pas à l'obtenir pour générer le classpath correctement dans le sh/bat fichiers. Ce fichier de configuration doit être situé à l'extérieur du pot.
La conf fichier est dans le répertoire /src/dist/conf/
donc, quand je lance installApp
il s'installe dans un répertoire conf comme ceci $APP_HOME/conf
.
J'ai essayé d'ajouter ce répertoire à la claspath comme ceci:
startScripts.classpath.add(files('$APP_HOME/conf'))
mais quand je regarde le chemin de classe dans le sh/bat fichiers il ajoute une entrée qui ressemble à ceci:
$APP_HOME/lib/conf
Comment dois-je dire à gradle pour déposer le lib
section pour cette entrée?
Vous devez vous connecter pour publier un commentaire.
Une autre solution de contournement pour ce problème (GRADLE-2333) est proposé par Alexandr Fadeev ici.
Ici est (un peu modifié) Alexandr la solution qui a résolu le problème pour moi sur Gradle-1.6:
C'est un peu plus laid que Josh est la solution, mais il vous permet de préserver l'exacte disposition des répertoires (/src/dist/conf et $APP_HOME/conf) mentionné dans la question d'origine.
La façon la plus simple pour obtenir un fichier sur le chemin de classe est de mettre en
src/main/resources
.src/dist
est pour ajouter des fichiers à la distribution (fichier zip), de ne pas le Pot/chemin de classe.Ce n'est pas particulièrement bonne réponse à votre question, mais j'ai trouvé quelques cas où les startScripts tâche n'est pas encore tout à fait avoir la souplesse dont nous avons besoin.
J'ai travaillé autour d'un couple de ces instances en modifiant le contenu du fichier directement... pas exactement profitant de Gradle est un grand modèle et pas particulièrement recommandé, mais au moins, montre comment flexible Gradle est!
De sorte que vous pourrait pirater quelque chose dans le classpath comme ceci:
Être conscient de briser le script de démarrage de l'indépendance de plate-forme lorsque vous faites cela.
Il me semble que ce que je suis en train de faire ne devrait pas être loin de l'ordinaire, mais comme une solution de contournement que je peux avoir le
dist
répertoiresrc/dist/lib/conf
qui permet à l'conf
répertoire pour être placé dans lelib
répertoire et le classpath que gradle génère pour les sh/bat fichiers à corriger.Je vais accepter une autre réponse si quelqu'un a une meilleure.
src/dist/lib/conf
lorsque vous exécutez le formulaire de demande d'IDE? Parce que si vous les ajoutez àsourceSets.main.resources
ils apparaissent dans le bocal.J'ai fait une variante de Martin Dow recette ci-dessous:
Je remplacer " APP_HOME=' avec 'l'exportation APP_HOME=' dans le script de démarrage.
Puis mon code peut faire Système.env.get("APP_HOME"), puis naviguez jusqu'à par exemple de la conf/dossier.
C'est mon Gradle hack:
Exemple de code Java dans l'application:
Espère que cette aide.
REMARQUE: "à l'exportation" ne fonctionne pas dans Windows!