Java的编译运行与Maven的打包(Scala)

一、java的编译与运行

1、java编译代码:

javac xxx.java

编译结果会生成.class文件,如xxx.class

2、java运行代码

java xxx

注意两点:

(1)运行时不要带有后缀.class

(2)java类在编译前不要带有包名,否则一定要到对应的包名位置去运行该代码。

(3) 可以在后面直接传参,会直接传入到java文件的主方法中。

比如java文件:

public class InputDemo1 {
  public static void main(String[] args) {
    System.out.println("InputDemo1");
    for (String arg : args) {
      System.out.println("result:"+arg+"!!!");
    }
  }
}

编译后在同层级目录下开启终端,录入

java InputDemo1 aa bb cc

则会输出结果:

InputDemo1
result:aa!!!
result:bb!!!
result:cc!!!

二、maven项目打jar包

1、方法1:

把plugins引入maven的pom文件中:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                <!--这里指定了默认主类的位置-->
                            <mainClass>com.fh.InputDemo2</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <!--下面是为了使用 mvn package命令,如果不加则使用mvn assembly-->
                <executions>
                    <execution>
                        <id>make-assemble</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

在idea的Terminal中运行

mvn package

直接完成打jar包的操作。

然后在同级别目录的终端,可以运行

java -jar JarDemo1-1.0-SNAPSHOT-jar-with-dependencies.jar 11 22 33

jar后面跟上的参数,可以直接传入该jar包的默认主方法(在pom已经指定好)中。
如果想调用该ja包下的其他主方法,则利用下面指令:

java -cp JarDemo1-1.0-SNAPSHOT-jar-with-dependencies.jar com.fh.InputDemo1 aa bb cc

完成调用。

2、方法2:

引入pom:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <shadedArtifactAttached>true</shadedArtifactAttached>
                            <relocations>
                                <relocation>
                                    <pattern>org.apache.http</pattern>
                                    <shadedPattern>shaded.org.apache.http</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>org.apache.commons.codec.digest</pattern>
                                    <shadedPattern>shaded.org.apache.commons.codec.digest</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>okhttp3</pattern>
                                    <shadedPattern>shaded.okhttp3</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>com.squareup.okhttp3</pattern>
                                    <shadedPattern>shaded.com.squareup.okhttp3</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>com.squareup.okio</pattern>
                                    <shadedPattern>shaded.com.squareup.okio</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>okio</pattern>
                                    <shadedPattern>shaded.okio</shadedPattern>
                                </relocation>
                            </relocations>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

然后在Terminal录入

mvn clean package

三、maven项目打jar包=>针对scala的打包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>org.example</groupId>
    <artifactId>maven_kafka_test</artifactId>
    <version>1.0-SNAPSHOT</version>
 
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
 
  <!-- 以下是我sparkstreaming用到的两个依赖 -->
    <dependencies>
 
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_2.11</artifactId>
            <version>2.4.7</version>
        </dependency>
 
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
            <version>2.4.7</version>
        </dependency>
    </dependencies>
 
 
  
    <build>
        <plugins>
            <plugin>
            <!-- !!必须有这个插件,才可以编译scala代码找到主类,版本我是网上搞来的 -->
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.2</version>
                <executions>
                    <execution>
                        <id>compile-scala</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>add-source</goal>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>test-compile-scala</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>add-source</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
                <!-- 填写你的scala version -->
                <configuration>
                    <scalaVersion>2.11.12</scalaVersion>
                </configuration>
            </plugin>
 
            <!-- maven编译插件,版本我是网上搞来的 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
 
 
            <!-- assembly模式编译,带依赖-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.0.0</version>
 
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                        <!-- 你的mainclass入口,我就是test.scala 在scala文件夹下, 目录就是scr/main/scala -->
                            <mainClass>test</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值