Maven之所以流行,除了它由包管理的能力外,非常重要的一点就是它的插件机制。幸运滴是,现在已经有很多好用的插件可以直接拿来的。
${basedir}
项目根目录
[codesyntax lang="xml"]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
[/codesyntax]
[codesyntax lang="xml"]
<build>
<finalName>surenpi.com.toolkit</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib</classpathPrefix>
<mainClass>org.suren.main.StartUp</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
[/codesyntax] 上面的finalName当然就是生成的文件名前缀了(surenpi.com.toolkit.jar),manifest的内容就是jar文件中的manifest了。
更多有关该插件的内容,请看这里。
下面的配置会将所有的maven依赖jar文件拷贝到项目的target目录下 [codesyntax lang="xml"]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
[/codesyntax] 下面的配置会将所有的maven依赖的包结构拷贝到生成的jar文件中,并添加manifest信息 [codesyntax lang="xml"]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-assembly</id>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
<manifest>
<mainClass>org.suren.main.StartUp</mainClass>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
[/codesyntax]
[codesyntax lang="xml"]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>sign</id>
<goals>
<goal>sign</goal>
</goals>
<phase>install</phase>
<configuration>
<alias>suren</alias>
<storepass>suren</storepass>
<keystore>${basedir}/key</keystore>
<jarPath>${project.build.directory}/${project.build.finalName}-jar-with-dependencies.jar
</jarPath>
</configuration>
</execution>
</executions>
</plugin>
[/codesyntax] 这个插件对于JNLP来说挺有用的。
要想自己写一Maven插件的童鞋,可以看这里。
在eclipse中使用Maven插件的常见问题