首页 > 解决方案 > jhipster 无法将 spring 运行配置文件更改为 prod - 始终以 dev、swagger 开头 - Maven as Service

问题描述

我在做

./mvnw -Pprod clean verify

并以 dev 身份开始,并且没有 prod 配置文件。

我是否必须更改我的 pom 文件中的某些内容?

        <id>prod</id>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-undertow</artifactId>
                <scope>provided</scope>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <configuration>
                        <filesets>
                            <fileset>
                                <directory>target/classes/static/</directory>
                            </fileset>
                        </filesets>
                    </configuration>
                </plugin>

要在 debian 服务器中设置为服务,我这样做:

sudo chmod +x /var/lib/nms-api/n2.jar
sudo chown nmsapi:nmsapi /var/lib/nms-api/n1.jar
sudo ln -s /var/lib/nms-api/n2.jar /etc/init.d/nms2
sudo systemctl enable nms2
sudo service nms2 start

编辑

我正在使用 jhipster 框架https://www.jhipster.tech/production/他们说:

请注意,此 JAR 文件使用我们在构建时选择的配置文件。由于它是使用上一节中的 prod 文件构建的,因此它将使用 prod 配置文件运行。

ps -aux

/usr/bin/java -Dsun.misc.URLClassPath.disableJarChecking=true -jar /var/lib/nms-api/n1.jar

java -Dspring.profiles.active=prod当作为服务盯着看时,有没有办法在上面的行中设置?

编辑 2

我设置环境变量

sudo -i
root@nms-cp01-vm01:~# export SPRING_PROFILES_ACTIVE=prod

 cat /etc/environment 
$ sudo vi /etc/environment 
$ echo $SPRING_PROFILES_ACTIVE
prod
$ sudo echo $SPRING_PROFILES_ACTIVE
prod

并且可以在 prod 配置文件中运行,如果

 /usr/bin/java -Dsun.misc.URLClassPath.disableJarChecking=true -jar /var/lib/nms-api/n4test.jar 

而不是在 prod 配置文件中,但如果以 root 身份运行,则在 dev 中

sudo /usr/bin/java -Dsun.misc.URLClassPath.disableJarChecking=true -jar /var/lib/nms-api/n4test.jar 

标签: spring-bootmavenjhipsterpom.xmlprofile

解决方案


您混淆了 Maven 配置文件和 Spring Boot 配置文件。它们是两个完全不同的概念。Maven 配置文件是用于在构建期间打开特定步骤的标志,而 spring 配置文件是一个运行时标志,用于告诉 spring 要应用哪组配置。有关弹簧型材的更多信息,您可以在此处查看

Spring 配置文件可以通过系统属性、环境变量进行设置,也可以作为 maven 构建的一部分。前两个在 imo 中要灵活得多。

系统属性

java -Dspring.profiles.active=prod

环境变量

export SPRING_PROFILES_ACTIVE=prod

作为 Maven 构建配置文件的一部分

 <profiles>
    <profile>
        <id>prod</id>
        <properties>
            <spring.profiles.active>prod</spring.profiles.active>
        </properties>
        <!-- The rest of your profile here -->
        <build>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
        ...
        </build>
    </profile>
  </profiles>

推荐阅读