2016-07-21 3 views
0

Я не могу использовать scala-maven-plugin для создания своих Java-источников из-за ошибки в Scalac (https://issues.scala-lang.org/browse/SI-9853).Как заставить scala-maven-plugin make видеть классы, скомпилированные maven-compiler-plugin?

Расщепление сборки так, что Java компилируется в Maven-компилятора-плагин и Scala по Scala-Maven-плагин было достаточно легко с источниками, проживающих в SRC/главная/Java и Src/main/scala. Сейчас я столкнулся с проблемой, что классы Scala не могут видеть Java-классы. При выполнении mvn clean compile я получаю «не найден» для всех классов Java, требуемых классами Scala. Проверка «target/classes» показывает, что Java-классы существуют.

Я попытался переместить Scala-build в разные фазы, но результаты остались прежними.

Как я могу сделать Scala-build видя классы, уже доступные в целевых классах?

<?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>de.codepitbull.maven</groupId> 
    <artifactId>maven-scalac-bug</artifactId> 
    <version>3.4.0-SNAPSHOT</version> 

    <name>Scalac + Javac</name> 

    <properties> 
     <scala.version>2.11.8</scala.version> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.scala-lang</groupId> 
      <artifactId>scala-library</artifactId> 
      <version>${scala.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.scala-lang</groupId> 
      <artifactId>scala-compiler</artifactId> 
      <scope>provided</scope> 
      <version>${scala.version}</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
       <executions> 
        <execution> 
         <phase>compile</phase> 
         <goals> 
          <goal>compile</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>net.alchim31.maven</groupId> 
       <artifactId>scala-maven-plugin</artifactId> 
       <version>3.2.2</version> 
       <configuration> 
        <sendJavaToScalac>false</sendJavaToScalac> 
        <args> 
         <arg>-target:jvm-1.8</arg> 
         <arg>-feature</arg> 
         <arg>-deprecation</arg> 
         <arg>-explaintypes</arg> 
         <arg>-unchecked</arg> 
         <arg>-Xlint</arg> 
        </args> 
       </configuration> 
       <executions> 
        <execution> 
         <id>java-compile-first</id> 
         <phase>compile</phase> 
         <goals> 
          <goal>compile</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

ответ

1

Простейшим обходным решением было бы разделить его на два подмодуля. Таким образом, вы можете ссылаться на классы Java как на зависимость. После этого создайте банку Uber или заштрихованную банку с помощью обоих модулей.

+0

Это вариант, который я хотел избежать, как уже сложную сборку для проекта, для которого я это делаю. Но пока это единственный вариант, который я вижу :( – codepitbull

Смежные вопросы