折腾了一下午,终于在maven下搞出一个可直接执行的jar
mvn install只是把项目打成一个jar包,发布到本地的 maven库里, 生成的东西不能直接运行
要运行,在pom.xml中添加下面的配置
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.yunling.mediacenter.server.AuthServer</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.yunling.mediacenter.server.AuthServer</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.3</version> <executions> <execution> <id>copy-resources</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <encoding>UTF-8</encoding> <outputDirectory>${project.build.directory}/conf </outputDirectory> <resources> <resource> <directory>conf</directory> <!-- includes> <include>config.xml</include> <include>log4j.xml</include> </includes> <filtering>true</filtering --> </resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> </build>
第一个plugin是原来就有的,设置一下编译时的编码
第二个plugin是设置一下打jar包时可执行的主类
第三个plugin是在打包时把依赖也打进去, 在主类的设置上跟上一个有重复, 有一个就可以了
第四人plugin是因为我的项目中有几个配置文件, 放在跟src平行的conf文件夹里,在打包时拷到target文件夹下去, 但还是没有一起打到jar包里去, 后面再找一下, 看怎么把配置文件也打进去
这样之后, 在项目文件夹下mvn assembly:assembly就可以在target 下面生成一个不带依赖的 jar和一个带依赖的 jar了, conf和里面的配置文件也拷到target下面了
再然后, cd target
java -jar xxxxxxxxxxxxxx.jar就行了(这里的jar 是那个带依赖的jar )
maven的生命周期, 有空再看, 应该也就是之间的依赖的问题, 应该不难处理。