2017-10-06 20 views
1

J'écris un plugin maven en utilisant les classes Mojo. Le plugin nécessite une dépendance appelée jcifs et l'a inclus dans le fichier pom.xml du plugin. Je suis capable de construire le plugin et il est déployé dans mon dépôt local. Je peux trouver le fichier jar et pom.xml dans mon dépôt local.Les dépendances externes du plugin Maven ne sont pas résolues

Lorsque j'utilise ce plug-in dans un autre projet de mon système local, lorsque j'exécute l'objectif du plugin, une exception me dit que la classe n'a pas été trouvée. Mais la classe vient du jcifs jar et elle est incluse dans la dépendance de mon plugin.

Je ne suis pas capable de comprendre ce que je manque ici. Toute aide est appréciée

Après est le plugin pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.mayuran19.maven.plugin</groupId> 
<artifactId>LocalToRemoteRepo</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>maven-plugin</packaging> 
<name>localtoremoterepo-maven-plugin</name> 

<properties> 
    <mavenVersion>3.2.1</mavenVersion> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <maven.compiler.source>1.8</maven.compiler.source> 
    <maven.compiler.target>1.8</maven.compiler.target> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-plugin-api</artifactId> 
     <version>3.5.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-core</artifactId> 
     <version>${mavenVersion}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven.plugin-tools</groupId> 
     <artifactId>maven-plugin-annotations</artifactId> 
     <version>3.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>jcifs</groupId> 
     <artifactId>jcifs</artifactId> 
     <version>1.3.17</version> 
    </dependency> 
</dependencies> 
<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.2</version> 
       <configuration> 
        <source>${maven.compiler.source}</source> 
        <target>${maven.compiler.target}</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-plugin-plugin</artifactId> 
       <version>3.3</version> 
       <executions> 
        <execution> 
         <id>default-descriptor</id> 
         <phase>process-classes</phase> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

Après émission est le pom.xml du projet qui utilisent ce plugin

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.mayuran19.maven.plugin</groupId> 
<artifactId>LocalToRemoteRepo</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>jar</packaging> 
<name>localtoremoterepo-maven-plugin Test</name> 

<properties> 
    <maven.compiler.source>1.8</maven.compiler.source> 
    <maven.compiler.target>1.8</maven.compiler.target> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>4.3.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.integration</groupId> 
     <artifactId>spring-integration-core</artifactId> 
     <version>4.3.4.RELEASE</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven.shared</groupId> 
     <artifactId>maven-dependency-tree</artifactId> 
     <version>3.0.1</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>jcifs</groupId> 
     <artifactId>jcifs</artifactId> 
     <version>1.3.17</version> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>com.mayuran19.maven.plugin</groupId> 
      <artifactId>LocalToRemoteRepo</artifactId> 
      <version>1.0-SNAPSHOT</version> 
      <configuration> 
       <localRepoDir>C:/Users/smayuran.SITBCS/.m2/repository</localRepoDir> 
       <remoteRepoDir>smb://192.168.9.196/internal</remoteRepoDir> 
       <username>G3App</username> 
       <password>[email protected]$1</password> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Erreur que j'obtiens est une exception de classe non trouvée de la bibliothèque jcifs

+0

D'abord, quel genre de plugin écrivez-vous? Deuxièmement, à quoi ressemble le pom de votre plugin et à quoi ressemble l'ensemble de la sortie d'erreur? – khmarbaise

+0

Pouvez-vous publier une arborescence de dépendances à partir de votre plugin - vous ne devriez pas non plus avoir besoin de la dépendance listée dans le projet implémentant le plugin s'il n'est utilisé que par le plugin. – cbm64

Répondre

0

Vous pouvez le faire de cette façon, si vous voulez:

** Étape 1: ** Télécharger le fichier jar à votre machine locale

** Étape 2: ** Déplacement vous Jar vous Maven repo: course comme illustré ci-dessous

Exemple:

<dependency> 
    <groupId>org.mock-server</groupId> 
    <artifactId>mockserver-netty</artifactId> 
<version>3.10.1</version> 
</dependency> 

mvn install:install-file -Dfile=C:\Users\username\Desktop\mockserver-netty-3.10.1.jar -DgroupId=org.mock-server -DartifactId=mockserver-netty -Dversion=3.10.1 -Dpackaging=jar