1. 程式人生 > >maven建立java和scala混合的專案

maven建立java和scala混合的專案

專案需求:我們採用spark開發專案,使用的開發語言採用java和scala的混合,這個時候我們的專案需要支援java和scala,一般方法兩種
(1)通過IDEA開發工具,下載SBT安裝包,通過SBT建立專案,自動支援java和scala比較方便,但包的下載很慢
(2)專案我們使用IDEA開發工具,通過maven來完成java和scala混合專案

下面我們專門介紹如何通過maven來支援java和scala語言的專案,主要涉及的內容如下

1、執行建立語句(命令列模式下執行)

mvn archetype:generate -DarchetypeGroupId=org.scala-tools.archetypes -DarchetypeArtifactId=scala-archetype-simple  -DremoteRepositories=http://scala-tools.org/repo-releases 

執行過程中需要讓您輸入以下引數,根據步驟輸入即可

Define value for property 'groupId': :
Define value for property 'artifactId': :
Define value for property 'version':  1.0-SNAPSHOT: :
Define value for property 'package':  : :

輸入完成後,通過回車結束,然後就可以建立成功了(緊scala專案)

2、專案結構

說明:

bigdata-user-profile 父目錄(在pom.xml 中,通過model方式引入)

userprofile-db 子工程

userprofile-es 子工程

3、手動方式新增java目錄(兩個專案)


4、介紹一下3個工程pom.xml 配置

4.1 bigdata-user-profile 的pom.xml配置

<?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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.demo.userprofile</groupId>
    <artifactId>bigdata-user-profile</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>userprofile-db</module>
	<module>userprofile-es</module>
    </modules>

    <properties>
        <encoding>UTF-8</encoding>
        <scala.version>2.10.5</scala.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.10</artifactId>
            <version>1.6.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.10</artifactId>
            <version>1.6.0</version>
        </dependency>

        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>${scala.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-compiler</artifactId>
            <version>${scala.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>net.alchim31.maven</groupId>
                    <artifactId>scala-maven-plugin</artifactId>
                    <version>3.2.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.0.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>scala-compile-first</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>add-source</goal>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>scala-test-compile</id>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

4.2 user-profile-db 的pom.xml配置(user-profile-es 中pom.xml 同user-profile-db,不在介紹)
<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/maven-v4_0_0.xsd">

    <parent>
        <groupId>com.demo.userprofile</groupId>
        <artifactId>bigdata-user-profile</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.demo.userprofile</groupId>
    <artifactId>userprofile-db</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>${project.artifactId}</name>

    <dependencies>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>bson</artifactId>
            <version>3.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20141113</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.3</version>
        </dependency>
    </dependencies>
</project>

5、編寫測試程式碼

分別在java和scala目錄下建立測試程式碼,主要測試打包是否完整,具體結構如圖所示


6、執行maven的命令

mvn clean compile package

直到出現下面的命令表示成功

[INFO] Replacing D:\demo\user_profiles\bigdata-user-profile\userprofile-es\target\userprofile-es-1.0-SNAPSHOT.jar with D:\demo\user_profiles\bigdata-user-p
rofile\userprofile-es\target\userprofile-es-1.0-SNAPSHOT-shaded.jar
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] bigdata-user-profile ............................... SUCCESS [ 33.012 s]
[INFO] userprofile-db ..................................... SUCCESS [ 33.083 s]
[INFO] userprofile-es ..................................... SUCCESS [ 31.985 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:38 min
[INFO] Finished at: 2016-09-26T11:34:38+08:00
[INFO] Final Memory: 84M/857M
[INFO] ------------------------------------------------------------------------

7、通過編譯工具檢視是否把java和scala程式碼打包成功

實際測試工程中已經ok


到這裡我們使用maven建立scala和java混合專案就成功了,以後再開發spark專案時候,就可以使用這種方式替代sbt方式了

相關推薦

maven建立javascala混合專案

專案需求:我們採用spark開發專案,使用的開發語言採用java和scala的混合,這個時候我們的專案需要支援java和scala,一般方法兩種 (1)通過IDEA開發工具,下載SBT安裝包,通過SBT建立專案,自動支援java和scala比較方便,但包的下載很慢 (2)專

Maven專案 混合編譯JavaScala

建立maven-scala專案後,會生成相應的pom檔案。把maven-surefire-plugin的外掛註釋掉或者直接刪掉。然後加入maven-shade-plugin的外掛配置。 接下來正常編寫程式執行專案時,由於java和scala程式碼相互呼叫,所以

Maven: 建立Java/Scala混編專案

2018.11.02 文章目錄 前言 方法 前言 專案需求改變,需要開發Spark應用,而原專案是基於Java開發的,所以就需要原專案能支援Java/Scala混編。原專案採用的是Maven專案管理工

使用IntelliJ IDEA 14Maven建立java web專案

初學IntelliJ IDEA轉自:http://mark.leanote.com/post/%E4%BD%BF%E7%94%A8IntelliJ-IDEA-14%E5%92%8CMaven%E5%88%9B%E5%BB%BAjava-web%E9%A1%B9%E7%9B%

Maven(二)——eclipse使用Maven建立JavaAndroid)專案

一、使用Maven建立專案的原因如下:         軟體開發講究程式碼複用,通過複用可以使工程更易維護,程式碼量更少..... 開發者可以通過繼承,組合,函式模組等實現不同程度上的程式碼複用.但不知你有沒有想過,軟體開發也是一種工程作業,絕不僅僅是寫程式碼,還涉及到工程

IDEA Java/Scala混合專案maven打包

轉自:http://www.voidcn.com/blog/rongyongfeikai2/article/p-5966631.html 1.在建立Maven專案時,選擇骨架為maven-archetype-quickstart 2.pom檔案內容為: <

Maven學習筆記(三)—— 使用Maven自帶的功能建立JavaJavaWeb專案

一、使用Maven建立Java專案1、開啟命令視窗,輸入建立命令使用shift+右鍵單擊,選擇在此處選擇開啟命令視窗,輸入如下命令:mvn archetype:generate -DgroupId=com.mengfei.demo -DartifactId=MavenJava

爬坑:spark專案打包報錯(javascala混編)

專案打包:mvn clean package -DskipTests java和scala混編打包 報錯: /Users/rocky/source/work/sparktrain/src/main/scala/com/zoujc/spark/project/dao/CourseSearchC

Maven建立java專案

1.使用Maven模板建立一個Java專案,在cmd命令中輸入如下: mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -Darchetype

maven環境下使用javascala混合開發spark應用

熟悉java的開發者在開發spark應用時,常常會遇到spark對java的介面文件不完善或者不提供對應的java介面的問題。這個時候,如果在java專案中能直接使用scala來開發spark應用,同時使用java來處理專案中的其它需求,將在一定程度上降低開發spark專案的

IntelliJ IDEA2016 + maven 建立java web 專案

如下圖,開啟idea之後,file -> new -> project 如下圖,在彈出的new project 頁面,選擇maven -> 勾選Create from artifactype (如果不選擇,下面的那一步就沒辦法走了)-

關於使用maven建立java web專案時,java Resources資料夾上出現紅X的現象

    在現實使用maven 簡歷專案中很多人可能會碰到這種情況,當我碰到這種情況的時候看到網的解決方法都很多,但是大家都講到了就是jdK版本與maven的編譯的版本不一樣所導致的但是沒有一個人的說道直接的解決方法。 下面我來說說看:   1、首先error log和mar

gradle專案中如何支援javascala混合使用?

一、目錄結構 基本上跟maven一樣,tips:這一堆目錄結構不用死記,後面會講如何用gradle命令快速生成 二、build.gradle配置 1 group 'yjmyzz' 2 version '1.0-SNAPSHOT' 3 4 appl

Maven】Eclipse 使用Maven建立Java Web專案

建立環境   系統:win 10   軟體:eclipse,maven 建立步驟   需求建立一個Servlet版本是3.0,Java版本是1.7的專案Maven web專案   使用eclipse工具建立maven專案,並選擇專案儲存的位置        選擇建立一個web專案,並設定專案的 Gro

IntelliJ IDEA2016.1 + maven 建立java web 專案

1. 如下圖,開啟idea之後,file -> new -> project 2. 如下圖,在彈出的new project 頁面,選擇maven -> 勾選Create from artifactype (如果不選擇,下面的那一步就沒辦法走了)->

maven系列--6-使用Maven建立Java web專案

4.更新POM <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven

eclipse中使用maven建立Java web專案的詳細步驟

本文總結怎麼在eclipse中使用maven建立一個Java web專案,servlet版本是3.0,Java版本是1.8。現在的eclipse javaee版本的都自帶了maven外掛,所以,下面就不介紹怎麼安裝該外掛了。 (一)建立一個普通的web專案 圖1:

在Eclipse中使用Maven建立多模組的層級專案

前言 Eclipse和maven 建立專案的結合, 可以先使用Maven建立專案後匯入Eclipse,參見: maven建立Java 和 Web Project, 並匯入Eclipse 也可以直接在Eclipse中進行建立。一般不復雜的專案, 建立一個專案就可以了,但是, 對於比較大

使用javascala編寫spark-WordCount示例

前言:     最近博主在學習spark相關知識,感覺是個挺不錯的框架,它的分散式處理大資料集的思想還是值得我們好好學習的。     個人感覺以後java開發肯定不僅僅是SSM這一套東西了,當資料量越來越大時,我們需要學習使用這些大資料工具。

javagroovy混合程式設計時提示找不到符合錯誤解決辦法

本人在使用java和groovy混合程式設計時,發現一個問題,當java和groovy相互呼叫的過程中在本機執行沒有任何問題,但當弄到Jenkins上之後總是報錯,本機使用gradle執行build的task的時候,也是報錯,資訊如下: 錯誤: 找不到符號 import com.fission