使用相同的资源位置执行和构建maven2 java jar项目
我对maven2和JavaJAR项目有点小问题 这是我的项目文件系统:使用相同的资源位置执行和构建maven2 java jar项目,java,maven-2,jar,Java,Maven 2,Jar,我对maven2和JavaJAR项目有点小问题 这是我的项目文件系统: MyApp -- /src/main/java -- my.package -- Main.java -- /src/main/resources -- application.properties 使用标准maven插件将Pom.xml配置为具有自定义包阶段: <!-- copy resources from /src/main/resource to target -->
MyApp
-- /src/main/java
-- my.package
-- Main.java
-- /src/main/resources
-- application.properties
使用标准maven插件将Pom.xml配置为具有自定义包阶段:
<!-- copy resources from /src/main/resource to target -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4</version>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- create an executable jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<finalName>${project.artifactId}-${project.version}</finalName>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>my.package.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- copy dependencies jars to target/lib folder -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
使用此配置并调用mvn包,一切都正常:在目标文件夹内创建一个新的jar,并复制资源和依赖项。
文件application.properties通过引用
新Fileapplication.properties
它是由JRE发现的。
如果我从目标文件夹手动运行jar,它会工作
现在我的问题是:我想添加execmaven插件来直接在eclipse中执行我的项目。
下面是我在pom.xml中的新插件:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<executable>java</executable>
<mainClass>my.package.Main</mainClass>
</configuration>
</plugin>
通过这种方式,我的类被执行,所有依赖项都得到满足,但找不到特定application.properties中的资源,因为我的程序工作目录是MyApp而不是MyApp/target。使用配置是无用的
我如何解决这个问题??
提前谢谢我想到两件事 a不通过maven exec运行,而是通过Eclipse IE作为独立应用程序运行。运行主类。您的Eclipse项目应该被Mavenize,以便设置正确的类路径
b不要使用常规的文件系统访问,而是将要加载的文件放在类路径上,并使用getClass.getClassLoader.getResourceAsStream来加载它。使用这种奇怪的maven构建有什么用意?