在STS中创建maven工件(eclipse)

时间:2017-04-29 20:46:20

标签: spring eclipse maven

我有一个多模块项目,我正在STS 3.8.4(eclipse neon.3)中开发。 到目前为止我有4个项目。 A,B,C.A是父母。 B& C. A使用pom包装。 C依赖于B.我也在运行Apache Archiva存储库。我已经使用" mvn deploy"成功地将所有3个模块部署到Archiva。在模块C的项目中,B显示在Maven Dependencies a B而不是B-x.y.jar中。在构建路径中,库,B显示子条目 访问规则 本地图书馆位置

其他jar文件也显示 来源附件 Javadoc位置 外部注释

在模块C中,找不到模块B的依赖关系。

A / pom.xml包含

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.3.RELEASE</version>
</parent>

<name>A/name>
<groupId>project</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

...

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
    <extensions>
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-webdav-jackrabbit</artifactId>
            <version>2.10</version>
        </extension>
    </extensions>
</build>

<repositories>
    <repository>
        <id>snapshots</id>
        <url>http://localhost:8080/repository/snapshots/</url>
    </repository>
    <repository>
        <id>internal</id>
        <url>http://localhost:8080/repository/internal/</url>
    </repository>
</repositories>

<distributionManagement>
    <snapshotRepository>
        <id>snapshots</id>
        <url>http://localhost:8080/repository/snapshots/</url>
    </snapshotRepository>
    <repository>
        <id>internal</id>
        <url>http://localhost:8080/repository/internal/</url>
    </repository>
</distributionManagement>

B / pom.xml包含

    <parent>
    <relativePath>../A/pom.xml</relativePath>
    <groupId>project</groupId>
    <artifactId>B</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

<name>B</name>
<artifactId>B</artifactId>
<packaging>jar</packaging>

...

<repositories>
    <repository>
        <id>snapshots</id>
        <url>http://localhost:8080/repository/snapshots/</url>
    </repository>
    <repository>
        <id>internal</id>
        <url>http://localhost:8080/repository/internal/</url>
    </repository>
</repositories>

<distributionManagement>
    <snapshotRepository>
        <id>snapshots</id>
        <url>http://localhost:8080/repository/snapshots/</url>
    </snapshotRepository>
    <repository>
        <id>internal</id>
        <url>http://localhost:8080/repository/internal/</url>
    </repository>
</distributionManagement>

C / pom.xml包含

<parent>
    <relativePath>../A/pom.xml</relativePath>
    <groupId>project</groupId>
    <artifactId>A</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

<name>C</name>
<artifactId>C</artifactId>
<packaging>jar</packaging>

<dependencies>
    <dependency>
        <groupId>project</groupId>
        <artifactId>B</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

...

<repositories>
    <repository>
        <id>snapshots</id>
        <url>http://localhost:8080/repository/snapshots/</url>
    </repository>
    <repository>
        <id>internal</id>
        <url>http://localhost:8080/repository/internal/</url>
    </repository>
</repositories>

<distributionManagement>
    <snapshotRepository>
        <id>snapshots</id>
        <url>http://localhost:8080/repository/snapshots/</url>
    </snapshotRepository>
    <repository>
        <id>internal</id>
        <url>http://localhost:8080/repository/internal/</url>
    </repository>
</distributionManagement>

另外,我注意到一个&#34; mvn包&#34;在生成的jar文件中不包含目标类。它只包含依赖的jar文件。这是B / pom.xml的部分。

<build>
    <plugins> 
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
        </plugin>
    </plugins>
    <extensions>
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-webdav-jackrabbit</artifactId>
            <version>2.10</version>
        </extension>
    </extensions>
</build>

1 个答案:

答案 0 :(得分:0)

从pom中取出所有弹簧靴的东西。我把类移出了BOOT-INF / classes。我不得不从有效的pom中添加更多插件到真正的pom,所以我可以删除spring-boot-maven-plugin。

我相信这也解决了我在解决项目C中项目B的类时遇到的问题。

在项目C的maven依赖项中没有看到B-x.y.jar的问题就是eclipse的工作方式。条目旁边的图标是文件夹图标而不是jar图标。我想这只是意味着eclipse将其解析为它的项目层次结构中的文件夹,而不是作为maven jar。