J'essaye de conditionner une application dans un fichier jar avec maven. D'une manière ou d'une autre, tous les fichiers, à l'exception des fichiers .gitignore
, sont ajoutés au fichier jar.
Pourquoi ce fichier est-il ignoré et comment puis-je le désactiver?
Même si j'essaie de l'inclure comme sous l'inclusion est ignoré et le fichier jar reste vide.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <includes> <include>**/.gitignore</include> </includes> </configuration> </plugin>
3 Réponses :
J'ai essayé cela avec un src / main / resources / .gitignore
et cela a fonctionné avec le maven-jar-plugin par défaut: 2.4
, c'est-à-dire .gitignore
a été emballé dans le JAR.
Ensuite, j'ai utilisé le maven-jar-plugin: 3.1.0
que vous mentionnez et cela n'a pas fonctionné, comme vous le décrivez.
Il s'est avéré que cela ne fonctionnait pas à partir de la version 2.5.
C'est la même chose que j'ai découvert. Alors peut-être qu'il n'y a aucune chance de faire cela avec maven-jar-plugin> = 3
La première chose à faire est d'utiliser un projet d'exemple de fichier jar est étonnant. Je ne m'attendrais jamais à avoir des exemples de projets dans un fichier .jar
. L'intention d'un fichier jar est quelque chose de différent. Je suggérerais d'utiliser quelque chose de plus approprié comme .zip
ou .tar.gz
etc. (Ceci peut être réalisé avec le maven-assembly-plugin ) Cela empêchera une utilisation accidentelle non prévue. Le problème est basé sur la définition des ressources qui sont généralement copiées de src / main / resources
vers le répertoire target / classes
. Ceci est fait par le maven-resources-plugin
.
Le maven-resources-plugin a une sorte de configuration qui exclut certains fichiers qui ne sont généralement pas copiés qui contiennent .gitignore
. Donc, cela signifie simplement mettre un fichier .gitignore
dans src / main / resources
ne produira pas le résultat attendu ni utiliser
Cela signifie que vous devez changer la configuration par défaut de maven-resources-plugin via la section pluginManagement
comme suit: p >
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.1.0</version> <configuration> <addDefaultExcludes>false</addDefaultExcludes> </configuration> </plugin>
Ensuite, le fichier .gitignore
sera copié et devrait être emballé dans le fichier jar résultant (ce que je ne recommanderais pas de faire.)
C'est vrai. J'ai déjà réussi à copier les fichiers avec le plugin resources vers target / classes
. Mais le maven-jar-plugin
> 2.4 ignore également les fichiers .gitignore
.
J'ai le même problème avec un dossier .metadata
dans le dossier target / classes
. Le dossier .metadata
n'est pas inclus dans l'archive jar.
Pour moi, cela ne fonctionne pas avec maven-jar-plugin: 2.4
et supérieur. Avec la version 2.3, cela fonctionne.
J'ai envoyé ce numéro: https://issues.apache.org/jira/ parcourir / MJAR-265
Pourquoi voulez-vous inclure .gitignore dans un fichier jar? Il est inutile de java, et dans un jar, il est inutile de git.
Le fichier jar est utilisé comme conteneur pour empaqueter un exemple d'application prêt pour le développement dans un workflow déjà existant.
De mon point de vue, vous devriez mieux utiliser une archive zip pour cela.
Mais je suppose que votre .gitignore ne se trouve pas non plus dans le répertoire cible - non? Cela signifie que vous devez le copier là-bas via le plugin de ressources - sinon le plugin jar ne peut pas le trouver.
J'ai dit au plugin de ressources de copier le fichier .gitignore via
addDefaultExcludes
vers la cible. Cela fonctionne. Mais le plugin maven-jar l'ignore toujours.Veuillez ajouter quelques informations sur la structure de votre projet et le résultat que vous attendez.
Il se peut que vous deviez copier le .gitignore dans target / classes pour que le plugin jar puisse l'attraper.
@ ochs.tobi Quand vous dites " cibler ", voulez-vous dire code>
" contenant les classes et les fichiers de ressources qui doivent être empaquetés dans le JAR ".
cible / classes
? Puisque c'est leMes sources sont copiées dans
target / classes
. Le fichier .gitignore est également là.Tout autre fichier peut être ajouté avec l'extrait de code ci-dessus comme:
.tfignore
ou d'autres seulement .gitignore semble impossible à ajouter.