个人觉得 第二种方法更好。

基于Maven构建的项目的方法:

一:

将项目所支持的所有类库打在一个包中,而不是只将项目编译打包到一个jar中。这样便可以直接拷贝一个jar去执行了。

 

Xml代码  

javamvn 打包如何让别人看不到代码 java打包maven_jar

    1. <plugin>
    2. <artifactId>maven-assembly-plugin</artifactId>
    3. <configuration>
    4. <appendAssemblyId>false</appendAssemblyId>
    5. <descriptorRefs>
    6. <descriptorRef>jar-with-dependencies</descriptorRef>
    7. </descriptorRefs>
    8. <archive>
    9. <manifest>
    10. <mainClass>com.ebay.montage.eventprocessor.collector.CodeRollOutEventDataCollector</mainClass>
    11. </manifest>
    12. </archive>
    13. </configuration>
    14. <executions>
    15. <execution>
    16. <id>make-assembly</id>
    17. <phase>package</phase>
    18. <goals>
    19. <goal>assembly</goal>
    20. </goals>
    21. </execution>
    22. </executions>
    23. </plugin>

    使用命令:

    mvn assembly:assembly -DskipTests

    这里就会在target目录下生成*.jar文件,

    直接运行jar文件: Java -jar *.jar

    备注:当然也可以使用mvn clean install -DskipTests 来构建生成jar包。

     

    注意绿色部分,自行定义内容。

     在 maven 工程中,我们也可以很方便的打包成可执行的 jar 包。默认Maven生成的JAR包只包含了编译生成的.class文件和项目资源文件,而要得到一个可以直接在命令行通过java命令运行的JAR文件,还要满足两个条件:

     

    • JAR包中的/META-INF/MANIFEST.MF元数据文件必须包含Main-Class信息。
    • 项目所有的依赖都必须在Classpath中,其可以通过 MANIFEST.MF 指定或者隐式设置。

     

    Xml代码  

    javamvn 打包如何让别人看不到代码 java打包maven_jar

    1. <plugins>
    2. <plugin>
    3. <groupId>org.apache.maven.plugins</groupId>
    4. <artifactId>maven-jar-plugin</artifactId>
    5. <configuration>
    6. <archive>
    7. <manifest>
    8. <addClasspath>true</addClasspath>
    9. <classpathPrefix>lib/</classpathPrefix>
    10. <mainClass>com.ebay.montage.eventprocessor.collector.MySpace</mainClass>
    11. </manifest>
    12. <manifestEntries>
    13. <Class-Path>.</Class-Path>
    14. </manifestEntries>
    15. </archive>
    16.   
    17. <finalName>eventprocessor</finalName>
    18. <excludes>
    19. <exclude>**/*.properties</exclude>
    20. <exclude>**/*.xml</exclude>
    21. </excludes> -->
    22. </configuration>
    23. </plugin>
    24.   
    25. <plugin>
    26. <groupId>org.apache.maven.plugins</groupId>
    27. <artifactId>maven-dependency-plugin</artifactId>
    28. <executions>
    29. <execution>
    30. <id>copy-dependencies</id>
    31. <phase>prepare-package</phase>
    32. <goals>
    33. <goal>copy-dependencies</goal>
    34. </goals>
    35. <configuration>
    36. <outputDirectory>${project.build.directory}/lib</outputDirectory>
    37. <overWriteReleases>false</overWriteReleases>
    38. <overWriteSnapshots>false</overWriteSnapshots>
    39. <overWriteIfNewer>true</overWriteIfNewer>
    40. </configuration>
    41. </execution>
    42. </executions>
    43. </plugin>
    44. </plugins>

     

    使用mvn clean install -DskipTests打jar 包。

     

     

    这样打好jar包后就可以使用:java -jar eventprocessor.jar Myspace, 

    当然了前提是在Myspace中有一个main方法。这样便可直接去执行Myspace中的main方法了。

    如果要将jar包放到别的机器上去运行的话,需要将targe中的lib下的内容(上面命令中指定)也同样拷贝过去,因为默认情况下:maven只是将项目编译打包到一个jar中,而其它的类库在上面手动的指定被放到了lib中,所以在执行的时候必须要引用才行。