Maven - 你需要一个main来将项目用作库吗?

时间:2016-04-28 08:30:04

标签: java eclipse maven

我正在开发一个项目,我有一个“核心”和一个“API”,它们是两个独立的maven项目。

目前,我正在使用Eclipse将jar导出到jar中,并且我将其链接到maven中:

<dependency>
    <groupId>com.project.my</groupId>
    <artifactId>project-api</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/dependencies/project-api.jar</systemPath>
</dependency>

它正常工作,我可以使用我的API中定义的类。

但是现在我希望有一个更好的工作流程,我正在尝试在我的本地maven存储库中安装API,然后在内核中将其正常链接:

<dependency>
    <groupId>com.project.my</groupId>
    <artifactId>project-api</artifactId>
    <version>1.0.0</version>
</dependency>

但是当我运行maven clean install时,我收到以下错误:

Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.3.3.RELEASE:repackage failed: Unable to find main class

我的API中确实没有main,因为我不需要。

请注意,我对两个项目使用spring-boot,因为我正在使用它们的一些依赖项,并且让它们更容易管理版本(我只使用API​​中的实用程序类)。

所以我想知道我是否必须有一个主程序,即使我没有使用过它,或者我在尝试在本地存储库中安装API时做错了什么?

谢谢:)

1 个答案:

答案 0 :(得分:3)

感谢Thilo明智的建议,我设法让它发挥作用。

所以我所做的就是从我的API项目中删除所有未使用的spring-boot引用,只保留我需要的spring依赖项,然后我就能正常运行mvn clean install

这是我摆脱的:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

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

我不得不将这些版本添加到以前由spring-boot管理的一些依赖项中,但它现在正常工作。