Ajouter projet Maven de démarrage à ressort dépendance à un autre projet (localement)

AKrush95:

Je cherche à utiliser un projet SB comme une dépendance dans un autre projet - sans utiliser un pom-mère et localement. Je l'ai fait avant d'utiliser un pom parent et en spécifiant des modules, mais je regarde le fractionnement du repo et doivent atteindre le même sans la pom-mère.

J'ai trouvé quelques messages de SO décrivant les moyens de le faire, mais aucun d'entre eux semblent travailler pour moi. Elles impliquent toutes mvn installing l'artefact afin qu'il soit disponible dans le dépôt local. Et cela semble fonctionner pour moi, jusqu'à ce qu'il ne fonctionne pas.

Note: Je travaille dans un environnement d'entreprise et je fais plan pour déployer ces pots à notre repo interne Nexus, cependant, je voudrais figure sur le développement local avant de plonger dans cette voie.

Mon mise en place est deux projets de start.spring.io vides (avec des noms différents).

.
├── test-application
│   ├── pom.xml
│   └── src
│       └── main
│           ├── java
│           │   └── com
│           │       └── example
│           │           └── testapplication
│           │               ├── TestApplication.java
│           │               └── TestClientConfig.java
│           └── resources
│               └── application.properties
│   
└── test-client
    ├── pom.xml
    └── src
        └── main
            ├── java
            │   └── com
            │       └── example
            │           └── testclient
            │               ├── TestClient.java
            │               └── TestClientApplication.java
            └── resources
                └── application.properties

Dans un projet, test-clientje définir une nouvelle classe

// TestClient.java

public class TestClient {

    private String value;

    public TestClient(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

Juste une classe de test de base que je vais faire dans un haricot dans ma demande de consommation.

Ensuite, je cours mvn clean installet vérifiez qu'il est dans mon .m2/repositorydossier

entrez la description d'image ici

Et maintenant, dans le test-application

//pom.xml

<dependency>
    <groupId>com.example</groupId>
    <artifactId>test-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

auto-importations IntelliJ et tout semble bien, pas rouge.

Ensuite, à l' intérieur d'un nouveau fichier , TestClientConfig.javaje commence à mettre en œuvre mon client:

entrez la description d'image ici

IntellJ ramasse les nouvelles classes de la dépendance et les suggère. Cependant, lorsque je tente d'importer, les choses ne fonctionnent pas trop bien.

Il importera le nom complet du paquet et ne pas le reconnaître: entrez la description d'image ici

And I can't add an import statement.

So I am stuck at this point. I have tried finessing some settings in IntelliJ to include the compiled jar as a library or to add a module but nothing really seemed to work fully and those options seemed kind of hacky.

Here's a link to the zip: https://drive.google.com/open?id=13XGVzICO_QHn_ihM7NFtK3GobAxeqLYf

CrazyCoder :

With Maven modules IntelliJ IDEA will resolve the dependencies from sources instead of jars. With your setup the dependencies are resolved from jars.

The .class files need to be in the root of the jar instead of BOOT-INF if you want to depend on this jar in the other projects. The classes are in BOOT-INF since you are using spring-boot-loader application which builds the executable jar.

Ce document décrit comment contourner le problème:

Pour les classes d'actions avec un autre projet, la meilleure approche à adopter est de créer un pot séparé contenant des classes partagées, puis en faire une dépendance de tous les modules qui comptent sur eux.

...
<build>
    ...
    <plugins>
        ...
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <classifier>exec</classifier>
            </configuration>
        </plugin>
    </plugins>
</build>

Cela va créer deux pots, l'un avec l'exécutif suffixe comme un pot exécutable, et un autre comme un pot plus typique que nous pouvons inclure dans d'autres projets.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=282219&siteId=1
conseillé
Classement