Я новичок в maven и в настоящее время пытаюсь собрать с ним проект scala. Структура проекта:
dir
|
|--src/main/java
|
|--src/main/scala
|
|--pom.xml
Я был удивлен тем, что классы, скомпилированные из *.java
заканчиваются в банке, но один из компилируемых из *.scala
этого не делает. Я добавил эти плагины в pom.xml
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.1.3</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<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>HelloWorld</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
Я, хотя maven-jar-plugin
, отвечает за сборку jar файлов. Но по какой-то причине он не добавляет scala-скомпилированные классы.
ВОПРОС: Кто добавляет файл .class
в финальную jar
после выполнения mvn install
? Как добавить .class
-files, скомпилированный с помощью компилятора scala?
Можете ли вы попробовать что-то подобное, используя вместо этого "scala-maven-plugin". Затем выполните mvn clean package
maven: mvn clean package
<build>
<sourceDirectory>${basedir}/src</sourceDirectory>
<resources>
<resource>
<directory>${basedir}/src/test/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>${scala-maven-plugin.version}</version>
<configuration>
<sourceDir>${basedir}/src</sourceDir>
<outputDir>${basedir}/target/classes</outputDir>
</configuration>
<executions>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
mvn package
будет строить вашу банку, однако maven-compiler-plugin будет компилировать ваши исходные файлы java, а не ваши исходные файлы scala. Scala-maven-plugin можно использовать для компиляции как java, так и scala-источников.
Я написал сообщение в блоге об этом некоторое время назад, что может помочь http://blog.rizvn.com/2016/04/scala-and-maven.html
Вам нужно будет сообщить maven о src/main/scala, так как вы ставите свой scala-код под src/main/java. Это делается через секцию сборки следующим образом:
<build>
<sourceDirectory>src/main/scala</sourceDirectory>
<testSourceDirectory>src/test/scala</testSourceDirectory>
...
</build>
mvn package
, а неmvn install