[JAVA] Until you build a project described in scala with Maven and execute it with the scala command.

Maven -scala run-

Since I had the opportunity to use maven for the first time, I will summarize the places where I got caught. See https://kengotoda.gitbooks.io/what-is-maven/primer/ for what maven itself looks like I got a rough image by reading. This article describes the procedure for achieving the following objectives.

  1. Create a project containing scala code
  2. Settings for executing scala code in maven
  3. Generating and executing a jar file containing dependencies

The environment is ApacheMave:3.5.0 java:1.8.0 scala:2.11.6

Project creation

$ mvn archetype:generate
Choose a number or apply filter : scala
# 7: remote -> net.alchim31.maven:scala-archetype-Check simple
Choose a number or apply filter : 7
Choose a number : 3
Define value for property 'groupId': project.test
Define value for property 'artifactId': mavenTest
Define value for property 'version' 1.0-SNAPSHOT: [Enter]
Define value for property 'package' project.test: [Enter]
Y: [Enter]

This will create a mavenTest folder.

$ tree mavenTest
├── pom.xml
└── src
    ├── main
    │   └── scala
    │       └── project
    │           └── test
    │               └── App.scala
    └── test
        └── scala
            └── samples
                ├── junit.scala
                ├── scalatest.scala
                └── specs.scala

Settings to run

If you compile as it is,

$ cd mavenTest
$ mvn compile
[ERROR] scalac error: bad option: '-make:transitive'
[INFO]   scalac -help  gives more information
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.446 s
[INFO] Finished at: 2017-08-11T21:39:24+09:00
[INFO] Final Memory: 11M/300M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.0:compi

Error appears. Therefore, edit pom.xml as follows.


<!--Delete this line-->

Then the compilation is successful, so execute it. Then I get the following error:

$ mvn scala:run
[ERROR] /home/yoshiki/xgboost/jvm-packages/project/mavenTest/src/test/scala/samples/specs.scala:18: error: not found: type JUnitRunner
[ERROR] @RunWith(classOf[JUnitRunner])
[ERROR]                  ^
[ERROR] one error found
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.391 s
[INFO] Finished at: 2017-08-11T21:43:41+09:00
[INFO] Final Memory: 11M/300M
[INFO] ------------------------------------------------------------------------

Apparently it was moss to build the test code. Therefore, change pom.xml as follows.

By the way, mvn compile and mvn scala: run compile and scala: run specify the execution goal, so

mvn scala: run includes mvn compile operations. So, in reality, you only need to execute mvn scala: run.


    <!-- JUnitRunner -->
        <!--version is before and after specs2-Match with core etc.-->


$ mvn scala:run

[WARNING] warning: there was one deprecation warning; re-run with -deprecation for details
[WARNING] one warning found
[INFO] prepare-compile in 0 s
[INFO] compile in 4 s
[INFO] <<< scala-maven-plugin:3.2.0:run (default-cli) < test-compile @ mavenTest <<<
[INFO] --- scala-maven-plugin:3.2.0:run (default-cli) @ mavenTest ---
[WARNING] Not mainClass or valid launcher found/define

Since there is no main class, specify it in scala-maven-plugin. (Reference: http://qiita.com/motokazu/items/57540c80509d83c6a168)


<!-- scala-maven-Add to plugin of plugin-->
        <!-- see http://davidb.github.com/scala-maven-plugin -->
        <!--from here-->
        <!--Add up to here-->

When mvn scala: run is executed,'Hello world!' Is output safely. Next, add the library you want to use freely to the dependencies of pom.xml. If xgboost,



Add it like that. (To actually use xgboost, you have to mvn install in advance according to the official procedure)

I just want to do it

mvn scala: run compiles and executes the application, but it even compiles without permission. If you just want to run it, you first need to generate a jar file containing the dependent libraries. for that reason Add maven-assembly-plugin to pom.xml.




$ ls target
archive-tmp                  maven-status                                      test-classes
classes                      mavenTest-1.0-SNAPSHOT.jar                        test-classes.-2096028797.timestamp
classes.936127338.timestamp  mavenTest-1.0-SNAPSHOT-jar-with-dependencies.jar
maven-archiver               specs2-reports

$ scala -cp target/mavenTest-1.0-SNAPSHOT-jar-with-dependencies.jar project.test.App
Hello World!
concat arguments = 

Add repository url



Recommended Posts

Until you build a project described in scala with Maven and execute it with the scala command.
Until you build a Nuxt.js development environment with Docker and touch it with VS Code
Until you create a Spring Boot project in Intellij and push it to Github
Create a Maven project with a command
Run JUnit and Spock in a maven project
Notify the build result with slack with CircleCI. You can do it in 5 minutes.
Getting started with Maven (until you create a Java project and combine external libraries into a single executable JAR)
21 Load the script from a file and execute it
Create a Java (Maven) project with VS Code and develop it on a Docker container
How to add another project as Maven library with CircleCI and use it for build
With [AWS] CodeStar, you can build a Spring (Java) project running on Lambda in just 3 minutes! !!
Graph the sensor information of Raspberry Pi in Java and check it with a web browser
Generate a serial number with Hibernate (JPA) TableGenerator and store it in the Id of String.
Until you build the docker environment and start / stop the Ubuntu container
Create a flyway jar with maven and docker build (migrate) with docker-maven-plugin
[Gradle] Build a Java project with a configuration different from the convention
Build a Java project with Gradle
How to download and run a Jar package directly from the Maven repository with just the command line
What to do if Operation not permitted is displayed when you execute a command in the terminal
Make a daily build of the TOPPERS kernel with Gitlab and Docker
Create a Spring Boot app development project with the cURL + tar command
[Java] Create a jar file with both compressed and uncompressed with the jar command
I wrote a Lambda function in Java and deployed it with SAM
Until you can use the H2 database in server mode with Dropwizard using Eclipse and connect with DB Viewer.
Create a jar file with the command
Getting started with Gradle (until you create a Java project and combine external libraries into one executable JAR)
Get YouTube video information with Retrofit and keep it in the Android app.
Until you run a Java program with the AWS SDK local to Windows
Build Apache and Tomcat environment with Docker. By the way, Maven & Java cooperation
I wanted to start the AP server and debug with just the Maven command
[Ruby] When you want to assign the result obtained by conditional branching to a variable and put it in the argument
[Laravel] Command memorandum until the start of the project
Add a project in any folder with Gradle
Automate Java (Maven) project build with CircleCI + Orbs
Docker command to create Rails project with a single blow in environment without Ruby
What to do if you cannot execute with the command "Java package name / class name"