多模块Spring Boot和start-class

时间:2015-06-20 23:41:45

标签: java spring maven spring-boot

我已经将我的应用程序设置为多模块,最终将它们分成多个存储库。

我在确定如何使mvn spring-boot:run使用我的布局时遇到问题(这可能是问题)。

实际上目录结构是

 xenoterracide/
     rpf/
     rpf-application/

当我从mvn test运行xenoterracide时,Application正常,当我启动rpf-application班级时效果正常。

如果我进入mvn compile并运行[INFO] ------------------------------------------------------------------------ [INFO] Building rpf-application 0.1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [WARNING] The POM for com.xenoterracide:security-rbac-jpa:jar:0.1.0-SNAPSHOT is missing, no dependency information available [WARNING] The POM for com.xenoterracide:http:jar:0.1.0-SNAPSHOT is missing, no dependency information available [WARNING] The POM for com.xenoterracide:rpf-domain:jar:0.1.0-SNAPSHOT is missing, no dependency information available [WARNING] The POM for com.xenoterracide:rpf-liquibase:jar:0.1.0-SNAPSHOT is missing, no dependency information available 它会告诉我它无法找到依赖项,我猜这是因为事情是要从存储库根目录。

start-class

如果我尝试在xenoterracide/pom.xml中设置rpf-application/pom.xml,它告诉我它无法找到该类(因为它当然是在rpf-application中)。

<parent> <artifactId>rpf</artifactId> <groupId>com.xenoterracide</groupId> <version>0.1.0-SNAPSHOT</version> <relativePath>../rpf/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>rpf-application</artifactId> <properties> <start-class>com.xenoterracide.RpfApplication</start-class> </properties> <dependencies> <!-- internal --> <dependency> <groupId>com.xenoterracide</groupId> <artifactId>security-rbac-jpa</artifactId> <version>0.1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.xenoterracide</groupId> <artifactId>http</artifactId> <version>0.1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.xenoterracide</groupId> <artifactId>rpf-domain</artifactId> <version>0.1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.xenoterracide</groupId> <artifactId>rpf-liquibase</artifactId> <version>0.1.0-SNAPSHOT</version> </dependency> ...

rpf/pom.xml

<parent> <artifactId>xenoterracide</artifactId> <groupId>com.xenoterracide</groupId> <version>0.1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>rpf</artifactId> <packaging>pom</packaging> <modules> <module>../rpf-domain</module> <module>../rpf-application</module> <module>../rpf-liquibase</module> </modules>

pom.xml

<modelVersion>4.0.0</modelVersion> <groupId>com.xenoterracide</groupId> <artifactId>xenoterracide</artifactId> <packaging>pom</packaging> <version>0.1.0-SNAPSHOT</version> <modules> <module>util</module> <module>http</module> <module>security-rbac-api</module> <module>security-rbac-jpa</module> <module>hibernate</module> <module>entity-jpa</module> <module>rpf</module> <module>test-repositories</module> <module>entity-api</module> </modules> <properties> <!-- use UTF-8 for everything --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <parent> <groupId>io.spring.platform</groupId> <artifactId>platform-bom</artifactId> <version>1.1.2.RELEASE</version> </parent>

mvn spring-boot:run

如何从存储库的根目录(xenoterracide)或rpf-application使// Render Pass 1 <Card> <p>Paragraph 1</p> <p>Paragraph 2</p> </Card> // Render Pass 2 <Card> <p style={{display: 'none'}}>Paragraph 1</p> <p>Paragraph 2</p> </Card> 工作?

1 个答案:

答案 0 :(得分:4)

我还有一个多项目的Spring Boot应用程序,你不能从父进程那里做,因为可能有多个模块,它不知道要运行哪个。如果首先将项目的其余部分安装到本地Maven存储库,则可以从子模块执行此操作。所以从你的异种酸酯运行:

mvn install

假设有效,它会将您的SNAPSHOT版本放入本地存储库。然后,您可以更改为rpf-application,然后运行:

mvn spring-boot:run

我从来没有真正使用它作为运行它的方式所以也许你可以解释你的需求是什么,我们可以看到是否有另一种方式可能更好。我确实用我的项目做了它并且它可以工作,但你必须意识到工作目录在哪里用于特定于环境的配置文件。