A. 如何用maven將配置文件打在jar包外
您好,很高興能幫助您,
pom如下,最後mvn package -Dmaven.test.skip=true結果在target下面有jar,lib是依賴庫,配置文件放在和jar一個目錄<build>
<sourceDirectory>src/main/java</sourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.directory}</targetPath>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<testSourceDirectory>src/test/java</testSourceDirectory>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>[2.0,)</versionRange>
<goals>
<goal>-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 打包源碼一起發布到maven倉庫中 -->
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.1</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 生成可執行JAR包命令 maven-jar-plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>***Main Application *** </mainClass>
</manifest>
<manifestEntries>
<Class-Path>./</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<!-- 拷貝依賴的jar包到lib目錄 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id></id>
<phase>package</phase>
<goals>
<goal>-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 生成可執行JAR包命令 maven-jar-plugin end -->
<!-- 生成可執行JAR包命令 maven-shade-plugin <plugin> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId> <version>1.2.1</version> <executions>
<execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration>
<transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>***.Application ***</mainClass> </transformer>
</transformers> </configuration> </execution> </executions> </plugin> -->
</plugins>
</build>
B. jar包啟動方式以及配置文件讀取順序
jar包啟動方式
此種方式,jar包需要放到最後
格式
例如
使用springboot的方式,此種方式jar需要放到前面
格式
例如
以jar包發布springboot項目時,默認會先使用jar包 同級目錄 下的 application.properties 來作為項目配置文件。但使用 --spring.config.location 指定了配置文件,則讀取指定的配置文件。
如果在不同的目錄中存在多個配置文件,它的讀取順序是:
C. jar包中配置文件的路徑
Propertiesprop=newProperties();prop.load(newFileInputStream("D://conf//a.properties"));
D. eclipse打包了可執行的jar文件.怎麼讓jar讀取同級目錄下的properties和xml配置文件
您好,讀取jar包內配置文件:
InputStream in = this.getClass().getClassLoader().getResourceAsStream("/configfilename.properties");
讀取jar包外配置文件:
String filePath = System.getProperty("user.dir") + "/conf/configfilename.properties";
InputStream in = new BufferedInputStream(new FileInputStream(filePath));
另外,如果app中使用到log4j.properties文件,默認的存放路徑是src/log4j.properties,同上面一樣,我想把log4j.properties放在其他目錄中,這樣一來,在修改log4j配置文件的時候無需重新打jar包。
在main函數第一行添加如下代碼:
PropertyConfigurator.configure(System.getProperty("user.dir") + "/conf/log4j.properties");
E. 如何用maven將配置文件打在jar包外
一、導出到默認目錄 targed/dependency
從Maven項目中導出項目依賴的jar包:進入工程pom.xml 所在的目錄下,執行如下命令:
1、mvn dependency:-dependencies或在eclipse中,選擇項目的pom.xml文件,點擊右鍵菜單中的Run As,見下圖紅框中,在彈出的Configuration窗口中,輸入 dependency:-dependencies後,點擊運行;
2、maven項目所依賴的jar包會導出到targed/dependency目錄中。
二、導出到自定義目錄中
在maven項目下創建lib文件夾,輸入以下命令:
1、mvn dependency:-dependencies -DoutputDirectory=lib;
2、maven項目所依賴的jar包都會復制到項目目錄下的lib目錄下。
三、設置依賴級別
同時可以設置依賴級別,通常使用compile級別
mvn dependency:-dependencies -DoutputDirectory=lib -DincludeScope=compile
F. jar包中的類讀取配置文件的路徑問題,求大家幫幫忙
應該是直接就可以讀取的。
因為你的配置文件和Jar文件在同一個目錄下,如果你的應用能找到jar文件,也就是可以找到配置文件。不過你要在classpath路徑中添加*.properties。