Maven mvn spring boot:run-找不到本地库,在命令行上失败,但在STS4中运行

Maven mvn spring boot:run-找不到本地库,在命令行上失败,但在STS4中运行,spring,eclipse,maven,spring-boot,spring-tool-suite,Spring,Eclipse,Maven,Spring Boot,Spring Tool Suite,我的SpringBoot(v2.2.0.RELEASE)应用程序称为项目服务。我想将其容器化,在此过程中请注意,它不会在Eclipse(STS4)之外运行。所以我想知道我应该改变什么 该应用程序依赖于我编写的一个小型库来重用某些类(fscl核心库),它是通过Maven作为jar构建的,目前依赖于我的本地机器 path-to-project/fscl-core-lib/target/fscl-core-lib-0.2.0.jar 当我从Eclipse(实际上是STS4)运行应用程序时,它可以工

我的SpringBoot(v2.2.0.RELEASE)应用程序称为项目服务。我想将其容器化,在此过程中请注意,它不会在Eclipse(STS4)之外运行。所以我想知道我应该改变什么

该应用程序依赖于我编写的一个小型库来重用某些类(fscl核心库),它是通过Maven作为jar构建的,目前依赖于我的本地机器

 path-to-project/fscl-core-lib/target/fscl-core-lib-0.2.0.jar
当我从Eclipse(实际上是STS4)运行应用程序时,它可以工作。当我尝试从命令行运行时,它以不同的方式失败,无论我尝试什么,都与找不到库有关

到目前为止,我已经尝试过:

1)Maven对lib的依赖性

在项目服务/pom.xml中:

    <dependency>
        <groupId>io.fscl</groupId>
        <artifactId>fscl-core-lib</artifactId>
        <version>0.2.0</version>            
    </dependency>
2)告诉Maven在哪里可以找到lib jar

<repositories>
    <repository>
    <id>fscl-core-lib</id>
    <url>file://path-to-project/fscl-core-lib/target</url>
  </repository>
</repositories>
...
<dependency>
    <groupId>io.fscl</groupId>
    <artifactId>fscl-core-lib</artifactId>
    <version>0.2.0</version>            
</dependency>
因此,它确实会转到本地存储库,但似乎需要一个不同的文件名。如何确定lib构建过程生成的文件名,它应该是什么

3)作为最后手段,将jar包含在类路径中

在STS4中,对于项目服务,项目->属性->Java构建路径-->库-->添加外部jar…,然后选择到项目/fscl核心库/target/fscl-core-lib-0.2.0.jar的路径

这在STS4中运行,但在CLI上由于编译器错误而失败,因为它在libs包中找不到任何内容

java.lang.NoClassDefFoundError: fscl/core/FSCLEntity
at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_131]
我在网上上下搜索,找到了这三种方法,现在我已经不知所措了。这一定是非常明显的事情,或者我遵循了一些完全错误的观点

欢迎任何建议

以下是库的pom.xml供参考:

fscl核心库/pom.xml

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>io.fscl</groupId>
<artifactId>fscl-core-lib</artifactId>
<version>0.2.0</version>
<name>fscl-core-lib</name>
<description>Library with cross-service reusable classes for FSCL system.</description>

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

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

</dependencies>
4.0.0
org.springframework.boot
spring启动程序父级
2.2.0.1发布
io.fscl
核心库
0.2.0
核心库
具有FSCL系统的跨服务可重用类的库。
1.8
org.springframework.boot
弹簧起动试验
测试
org.junit.vintage
朱尼特老式发动机
org.springframework.boot
spring启动程序数据mongodb

以及应用程序项目服务/pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>io.fscl</groupId>
<artifactId>project-service</artifactId>
<version>0.2.0</version>
<name>project-service</name>
<description>Demo project for Spring Boot</description>

<properties>
    <java.version>1.8</java.version>
</properties>

<repositories>
    <repository>
    <id>fscl-core-lib</id>
    <url>file://path-to-project/fscl-core-lib/target</url>
  </repository>
</repositories>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>io.fscl</groupId>
        <artifactId>fscl-core-lib</artifactId>
        <version>0.2.0</version>            
    </dependency>

    <dependency>
        <groupId>de.bechte.junit</groupId>
        <artifactId>junit-hierarchicalcontextrunner</artifactId>
        <version>4.12.1</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.4</version>
    </dependency>

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

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons-core</artifactId>
        <version>1.4.1.RELEASE</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

org.springframework.boot
spring启动程序父级
2.2.0.1发布
io.fscl
项目服务
0.2.0
项目服务
SpringBoot的演示项目
1.8
核心库
file://path-to-project/fscl-core-lib/target
org.springframework.boot
弹簧靴起动器执行器
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧起动试验
测试
org.junit.vintage
朱尼特老式发动机
io.fscl
核心库
0.2.0            
德贝希特朱尼
junit HierarchycalContextRunner
4.12.1
测试
org.apache.commons
公共集合4
4.4
org.springframework.boot
spring启动程序数据mongodb
org.springframework.data
spring数据共享核心
1.4.1.1发布
org.springframework.boot
springbootmaven插件
所以

正如LucasP所建议的,在lib项目中运行mvn install就可以做到这一点,因为它将jar安装到本地存储库(~/.m2…)中

同时,我选择在项目中创建一个独立的存储库,并将lib-jar部署到该项目中()


这样,一旦我需要构建lib的新版本,(1)我在pom.xml中更新它的版本信息,(2)使用
mvn包
构建它,(3)为每个依赖的项目运行
mvn deploy:deploy file
命令(我在lib文件夹中的
deploy
bash脚本中维护它们)。

在fscl核心lib项目中,运行
mvn install
将其安装到本地maven存储库中。这应该允许您从命令行构建另一个项目。LucasP,您完成了。谢谢。总而言之:我当然可以去掉我的项目服务/pom.xml中的项目
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>io.fscl</groupId>
<artifactId>fscl-core-lib</artifactId>
<version>0.2.0</version>
<name>fscl-core-lib</name>
<description>Library with cross-service reusable classes for FSCL system.</description>

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

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

</dependencies>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>io.fscl</groupId>
<artifactId>project-service</artifactId>
<version>0.2.0</version>
<name>project-service</name>
<description>Demo project for Spring Boot</description>

<properties>
    <java.version>1.8</java.version>
</properties>

<repositories>
    <repository>
    <id>fscl-core-lib</id>
    <url>file://path-to-project/fscl-core-lib/target</url>
  </repository>
</repositories>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>io.fscl</groupId>
        <artifactId>fscl-core-lib</artifactId>
        <version>0.2.0</version>            
    </dependency>

    <dependency>
        <groupId>de.bechte.junit</groupId>
        <artifactId>junit-hierarchicalcontextrunner</artifactId>
        <version>4.12.1</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.4</version>
    </dependency>

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

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons-core</artifactId>
        <version>1.4.1.RELEASE</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>