Java 多模块Spring引导和启动类

Java 多模块Spring引导和启动类,java,spring,maven,spring-boot,Java,Spring,Maven,Spring Boot,我已将我的应用程序制作成多个模块,并计划最终将其拆分为多个回购协议 我在弄清楚如何使mvn-spring-boot:run与我的布局一起工作时遇到了问题(这可能就是问题所在) 实际上目录结构是 xenoterracide/ rpf/ rpf-application/ 当我从xenoterracide运行mvn测试时,该测试通过,当我启动应用程序时,该类工作正常 如果我将cd放入rpf应用程序并运行mvn compile,它会告诉我它找不到依赖项,我猜这是因为要从存储库根目

我已将我的应用程序制作成多个模块,并计划最终将其拆分为多个回购协议

我在弄清楚如何使
mvn-spring-boot:run
与我的布局一起工作时遇到了问题(这可能就是问题所在)

实际上目录结构是

 xenoterracide/
     rpf/
     rpf-application/
当我从
xenoterracide
运行
mvn测试时,该测试通过,当我启动
应用程序时,该类工作正常

如果我将cd放入
rpf应用程序
并运行
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
如果我试图在
xenotracide/pom.xml
中设置
start类
,它会告诉我它找不到该类(因为它当然在rpf应用程序中)

rpf应用程序/pom.xml

<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>
...
<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>
<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>
pom.xml

<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>
...
<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>
<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>
4.0.0
com.xenoterracide
灭鼠剂
聚甲醛
0.1.0-SNAPSHOT
利用率
http
安全rbac api
安全rbac jpa
冬眠
实体jpa
rpf
测试存储库
实体api
UTF-8
UTF-8
1.8
io.spring.platform
平台物料清单
1.1.2.1发布

如何使
mvn spring boot:run
从存储库的根目录(Xenotracide)或
rpf应用程序运行?

我还有一个多项目spring boot应用程序,您不能从父级运行,因为可能有多个模块,它不知道运行哪个模块。如果您首先将项目的其余部分安装到本地Maven存储库中,则可以从子模块执行此操作。因此,从您的Xenotracide跑步中:

mvn install
假设这样做有效,它会将快照版本放入本地存储库中。然后,您可以更改为rpf应用程序,然后运行:

mvn spring-boot:run

我从来没有真正使用过这种方式来运行它,所以也许你可以解释一下你需要什么,我们可以看看是否有其他更好的方式。我确实是用我的项目做的,它可以工作,但是你必须知道特定于环境的配置文件的工作目录在哪里。

我也有一个多项目Spring Boot应用程序,你不能从父项目做,因为可能有多个模块,它不知道运行哪个。如果您首先将项目的其余部分安装到本地Maven存储库中,则可以从子模块执行此操作。因此,从您的Xenotracide跑步中:

mvn install
假设这样做有效,它会将快照版本放入本地存储库中。然后,您可以更改为rpf应用程序,然后运行:

mvn spring-boot:run

我从来没有真正使用过这种方式来运行它,所以也许你可以解释一下你需要什么,我们可以看看是否有其他更好的方式。我确实在我的项目中这样做了,而且很有效,但是您必须知道特定于环境的配置文件的工作目录在哪里。

我有一个朋友,我曾经/正在尝试将其作为开发堆栈迁移到java/spring io,我告诉他运行它的简单方法(没有IDE,他是盲目的),但它不起作用,我不知道其他方法,因为目前我要么运行测试套件,要么直接启动应用程序类(我的应用程序还没有达到我希望部署的状态)。我当然鼓励他去看更简单的应用程序。我认为对他来说,一个非常面向终端的工作流将是最好的。先安装后运行不会有问题,新的开发工具可以使用吗?我认为这不会有问题。我在我的项目中使用IntelliJ。您也可以设置自己的脚本。希望这个答案正是您想要的。是否有可能在每次对子模块进行更改时都不必运行mvn安装就可以进行此设置?也许是一个eclipse插件?我对eclipse不太熟悉,但这是可能的。如果您需要更改,您可以使用Spring Boot Dev工具在IDE中重新加载。我有一个朋友,我曾经/正在尝试将其作为开发堆栈迁移到java/Spring io,我告诉他运行它的简单方法(没有IDE,他是盲目的),但它不起作用,我不知道其他方法,因为目前我要么运行测试套件,要么直接启动应用程序类(我的应用程序还没有达到我希望部署的状态)。我当然鼓励他去看更简单的应用程序。我认为对他来说,一个非常面向终端的工作流将是最好的。先安装后运行不会有问题,新的开发工具可以使用吗?我认为这不会有问题。我在我的项目中使用IntelliJ。您也可以设置自己的脚本。希望这个答案正是您想要的。是否有可能在每次对子模块进行更改时都不必运行mvn安装就可以进行此设置?也许是一个eclipse插件?我对eclipse不太熟悉,但这是可能的。如果您正在寻找更改,则可以使用Spring引导开发工具在IDE中重新加载。