Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将一个Springboot应用程序打包成另一个Springboot应用程序中的操作依赖项_Java_Maven_Spring Boot - Fatal编程技术网

Java 如何将一个Springboot应用程序打包成另一个Springboot应用程序中的操作依赖项

Java 如何将一个Springboot应用程序打包成另一个Springboot应用程序中的操作依赖项,java,maven,spring-boot,Java,Maven,Spring Boot,我有一个Springboot应用程序,它有一个@Scheduled方法。我希望以一种方式将其打包,使其他需要我的功能的应用程序可以简单地将其添加到它们的POM中,并自动运行@Scheduled方法,而无需进行任何代码更改(配置除外) 这可以通过Springboot实现吗?我宁愿不创建父项目,而是将其作为依赖项。谢谢 编辑:我已将Springboot应用程序导出为Jar并在本地导入,但@Scheduled方法从未运行。要创建您自己的库,只需创建一个单独的标准java maven项目并将您的公共类放

我有一个Springboot应用程序,它有一个@Scheduled方法。我希望以一种方式将其打包,使其他需要我的功能的应用程序可以简单地将其添加到它们的POM中,并自动运行@Scheduled方法,而无需进行任何代码更改(配置除外)

这可以通过Springboot实现吗?我宁愿不创建父项目,而是将其作为依赖项。谢谢


编辑:我已将Springboot应用程序导出为Jar并在本地导入,但@Scheduled方法从未运行。

要创建您自己的库,只需创建一个单独的标准java maven项目并将您的公共类放入其中。确保将带有@springboot应用程序的类放入其中(确保可以这样做,但为了简单起见,让我们保持这样)

您的pom应该是:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.my.own</groupId>
  <artifactId>my-own-utils</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>my-own-utils</name>
  <description>My Own Spring Boot App Utilities</description>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>

    <!-- here you put your dependencies just as in a spring boot app. You can even use starters. -->

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

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

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

    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-web</artifactId>
    </dependency>

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

    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-sns</artifactId>
      <version>1.11.301</version>
    </dependency>

  </dependencies>

</project>
此时,在启动时,spring应用程序将在包含库的完整类路径上查找自己包的bean和组件,以及
com.my.own
包,并根据它们的注释实例化它们


如果您想控制应用程序实例化的内容(假设您的库有5个@Component类,但您只想使用一个),您可以使用
@ConditionalProperty
注释。

1。您可以从spring boot应用程序2中导出一个jar。如果您不希望jar公开或使用central maven repository,则需要一些存储库管理器。3.在其他任何地方将其作为依赖项使用。尝试过此操作后,@Scheduled job根本不会运行。使用此依赖项的项目是否在其配置中启用了计划?我不希望向消费项目添加任何批注,但如果我可以更改application.properties配置,请告诉我。编辑:我已经尝试在应用程序类中添加@EnableScheduling,但没有任何更改。在我看来,决定是否启用调度应该是“消耗”项目责任。依赖项不应覆盖现有配置。在一个有很多依赖项的项目中,它会非常混乱。这是maven插件!取出它并执行
mvn包
创建了一个可用于我的项目的jar
<dependency>
  <groupId>com.my.own</groupId>
  <artifactId>my-own-utils</artifactId>
  <version>1.0.0-SNAPSHOT</version>
</dependency>
@SpringBootApplication
@ComponentScan("com.my.own")
public class MainApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MainApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}