4
votes

maven-jar-plugin n'inclut pas le fichier .gitignore

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>
  • version du plugin maven-jar: 3.1.0
  • version maven: 3.5.2


10 commentaires

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 cible / classes ? Puisque c'est le " contenant les classes et les fichiers de ressources qui doivent être empaquetés dans le JAR ".


Mes 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.


3 Réponses :


3
votes

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.


1 commentaires

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



1
votes

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 .. n'aidera pas ici non plus.

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.)


1 commentaires

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 .



2
votes

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


0 commentaires