项目通过idea工具进行,执行方式有很多:
1 直接通过idea运行main方法,
2 mvn命名打jar包直接运行jar, 在生成jar的target目录下 java -jar xxx.jar -Dlogpath=D://logs --server.port=8083
3 springboot也有提供启动命令 spring-boot:run
1如果想要分profile,在stg环境时,不使用项目内部的资源文件:
再各自的profile里分别指定resource的内容
<profiles>
<profile>
<id>stg</id>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>wmconf/xx1.properties</exclude>
<exclude>wmconf/xx2.properties</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
</profile>
</profiles>
springboot打包时,如何不将jar依赖也打进去?
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork> <!-- hot deploy -->
<includes> <!-- exclude third part jar files -->
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
</plugin>
将项目依赖单独放到lib里:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<type>jar</type>
<includeTypes>jar</includeTypes>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
将资源文件放到config目录下,只有第一次时才指定下面的resource,之后就不能再指定了,否则就覆盖了,获取从一开始,就自己创建config目录:
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.directory}/config</targetPath>
<filtering>true</filtering>
<includes>
<include>**.xml</include>
<include>**.properties</include>
</includes>
</resource>
如果mybatis的资源文件是放在src/main/java下时,需要指定:
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>-
将resources下的xml放在classes目录里,不过我觉的这步多余了,我的mapper在resouces下,没有指定这个也可以运行
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.directory}\classes</targetPath>
<filtering>true</filtering>
<includes>
<include>mapping/*.xml</include>
</includes>
</resource>
真正打jar包时,指定classpath, 包含lib ,和config
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classesDirectory>target/classes/</classesDirectory>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib</classpathPrefix>
<!-- 程序启动入口 -->
<mainClass>com.example.demo.DemoApplication</mainClass>
</manifest>
<manifestEntries>
<!--读取外部配置文件,放到classpath里-->
<Class-Path>config/ .</Class-Path>
</manifestEntries>
</archive>
<!--没有在这里排除的话,会被打到classes里-->
<excludes>
<exclude>*.xml</exclude>
<exclude>*.properties</exclude>
</excludes>
</configuration>
</plugin>