Spring 弹簧靴和角形(5)项目结构

Spring 弹簧靴和角形(5)项目结构,spring,angular,maven,spring-boot,angular-cli,Spring,Angular,Maven,Spring Boot,Angular Cli,我对在同一个项目中使用这些技术的最佳实践有疑问。什么是推荐的和最常用的项目结构 我看到了三种设计项目结构的方法: 创建maven多模块项目,使用angular cli项目创建两个模块前端,使用spring项目创建后端 在路径src/main/webapp上将angular cli项目创建到spring项目中 此选项与第二个类似,angular cli也将创建到路径src/main/webapp上的spring项目中,后缀为*.json、*.ts等的配置文件除外。。。这些文件将位于pom的根目录中

我对在同一个项目中使用这些技术的最佳实践有疑问。什么是推荐的和最常用的项目结构

我看到了三种设计项目结构的方法:

创建maven多模块项目,使用angular cli项目创建两个模块前端,使用spring项目创建后端 在路径src/main/webapp上将angular cli项目创建到spring项目中 此选项与第二个类似,angular cli也将创建到路径src/main/webapp上的spring项目中,后缀为*.json、*.ts等的配置文件除外。。。这些文件将位于pom的根目录中。所以webapp文件夹将只包含源文件和jhipster风格的资产。
你推荐什么?另外,当我选择其中一个选项时,是否可以配置项目以将角度源文件导出到可部署JAR文件中?谢谢你的建议。

我一直在采取一种方法,将源代码放在你通常期望的地方——放在“src/main”目录下。因此,我有src/main/java和src/main javascript,angular应用程序位于后一个目录中

我将angular应用程序设置为编译成src/main/resources/static/ui,并将SpringBoot应用程序配置为从此处提供服务

- 其他信息-为了提供Angular应用程序的index.html,我使用以下内容:

@Bean
public WebMvcConfigurerAdapter forwardToIndex() {
    final String uiForward = "redirect:/ui/index.html";
    final String[] fauxRoots = new String[] {"/", "/index.html", "/ui", "/ui/"};

    return new WebMvcConfigurerAdapter() {
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            for(String path: fauxRoots) {
                registry.addViewController(path).setViewName(uiForward);
            }
        }

    };
}

我在src/main/resources/static/ui中内置了Angular应用程序,我认为Spring默认情况下会提供src/main/resources/static中的静态内容,所以这样就可以正常工作了。

第一种方法是违反直觉的。为什么要将一个角度项目通过模块Maven与Maven强耦合?第二种方式似乎更干净:它把不同的东西放在不同的地方。第三种方式太多地混合了两个世界。@davidxxx我也在考虑第二种或第一种选择。第一个看起来对我来说是最干净的。它的好主意是:如果我使用这种结构,我需要为索引文件使用经典控制器吗?或者rest控制器足够了,索引是自动提供的?