Java springbootwar或jarforrestapi项目

Java springbootwar或jarforrestapi项目,java,reactjs,spring-boot,maven-2,Java,Reactjs,Spring Boot,Maven 2,我想使用SpringBoot开发示例RESTAPI项目。我不知道什么是正确的方法,因为我们有多种包装选项,如war,jar等 我有一个要求,即我有一个外部库文件夹,其中包含多个jar,以及将在RESTAPI和前端(使用React)中使用的资源文件 由于JAR和资源的动态变化,我希望将它们作为外部依赖项保留,并且我不希望将它们包括在项目中。我尝试了使用loader.path和jar的示例项目,虽然效果很好,但同样的方法不适用于war文件。我使用Maven作为构建工具 在Spring Boot中应该

我想使用SpringBoot开发示例RESTAPI项目。我不知道什么是正确的方法,因为我们有多种包装选项,如
war
jar

我有一个要求,即我有一个外部库文件夹,其中包含多个
jar
,以及将在RESTAPI和前端(使用React)中使用的资源文件

由于JAR和资源的动态变化,我希望将它们作为外部依赖项保留,并且我不希望将它们包括在项目中。我尝试了使用
loader.path
jar
的示例项目,虽然效果很好,但同样的方法不适用于
war
文件。我使用Maven作为构建工具

  • 在Spring Boot中应该采用什么方法来实现这一点
  • 需要2.xx版本中的工作示例
  • 应该使用什么
    war
    jar
  • 如何将IDE(Eclipse/IntelliJ)配置为在Spring Boot中使用外部
    lib
    文件夹-我找不到解决方案

  • 您应该使它成为一个可执行的Spring引导JAR

    只有在必须将WAR部署到JavaEE服务器上时,才需要WAR

    你使用Maven很好。让it管理您的依赖项并构建包

    您希望找到Maven插件,该插件创建包含依赖项的可执行JAR

    更新:

    以下是我对你的四个问题的回答:

  • 不要混用Maven和/lib。最好使用
    mvn install
    将您声称需要的所有外部库放置在本地.m2或Maven存储库中
  • 有关工作示例,请参见。也许服务和React前端应该是独立的包和部署
  • 这是Spring引导,不是JavaEE。使用可执行的JAR,而不是WAR
  • 见建议1。在Maven中安装这些JAR。不要混搭
    我建议您考虑单独部署REST服务,并让反应前端调用它。把两者分开。让REST服务成为一个独立的微服务,没有UI。

    您可以使用创建一个具有依赖项的可执行JAR文件

    
    org.apache.maven.plugins
    maven编译器插件
    1.8
    1.8
    maven汇编插件
    3.1.0
    ${mainClass}
    带有依赖项的jar
    包裹
    单一的
    
    将它添加到
    元素中的
    pom.xml
    中,可以构建
    jar
    jar依赖项包


    要构建包,请使用
    mvn clean package
    命令。

    选择jar还是war取决于您是想要一个独立的可执行应用程序,还是想要在Weblogic等服务器上部署您的项目。假设我的应用程序是一个复杂项目的中间层或适配器(助手应用程序),我会将其作为war部署在WebLogic上

    对你来说,我的建议是用罐子代替战争。要构建jar,请使用mvn clean install命令

    要加载外部属性文件,只需将文件夹名称和属性名称作为命令行参数的一部分传递,如下所示:

    java -jar myapp.jar --spring.config.name=application,myapp
    -- spring.config.location=classpath:/data/myapp/config,classpath:/data/myapp/external/config
    
    为了从外部导入资源,您可以使用

    Resource banner = resourceLoader.getResource("file:c:/temp/filesystemdata.txt");
    
    代码片段

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    import org.springframework.context.ResourceLoaderAware;
    import org.springframework.core.io.Resource;
    import org.springframework.core.io.ResourceLoader;
    
    public class CustomResourceLoader implements ResourceLoaderAware
    {
    
        private ResourceLoader resourceLoader;
    
        public void setResourceLoader(ResourceLoader resourceLoader) {
            this.resourceLoader = resourceLoader;
        }
    
        public void showResourceData() throws IOException
        {
            //This line will be changed for all versions of other examples
            Resource banner = resourceLoader.getResource("file:c:/temp/filesystemdata.txt");
    
            InputStream in = banner.getInputStream();
    
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    
            while (true) {
                String line = reader.readLine();
                if (line == null)
                    break;
                System.out.println(line);
            }
            reader.close();
        }
    }
    
    此文件的applicationContext.xml文件条目如下所示:

    <bean id="customResourceLoader" class="com.howtodoinjava.demo.CustomResourceLoader"></bean>
    
    
    
    附录-

  • 如果你需要一个独立的应用程序,那就买一个jar吧
  • 如果您需要在服务器中部署,请选择war

  • 我已经尝试了您的示例代码,但它创建了带有依赖项的jar,我不想找这个,我想创建没有依赖项的SpringBootJAR,所有依赖项都应该复制到lib文件夹中。我在maven中找到了一个选项,它允许在没有依赖关系的情况下创建jar,并在lib folder中复制所有必需的jar谢谢你的回答,我将尝试使用链接作为工作示例,并更新youThanks Shubham作为你的答案,这似乎对我有效
    <bean id="customResourceLoader" class="com.howtodoinjava.demo.CustomResourceLoader"></bean>