2013-06-20 3 views
3

Я хотел бы задать вам простой вопрос. Можно ли упаковать WAR-файл, который будет содержать источники Scala и Java, каждый из которых состоит из отдельного исходного каталога (src/main/java/... и src/main/scala/...)? Конечно, мне все равно хочется содержать другие ресурсы, такие как изображения и статические страницы, в результате WAR.Упаковка WAR с источниками Java и Scala

Я изучал возможности плагина WAR, касающиеся дополнительных источников, но я не нашел ничего полезного в этой области. Может ли кто-нибудь дать мне подсказку, где я должен искать решение или, возможно, любую помощь?

Спасибо, Matthew

ответ

2

Вот вырубить версию П я использую для моих многоязычных проектов.

<?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>com.sksamuel</groupId> 
    <artifactId>test</artifactId> 
    <version>0.33-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 

     <maven.plugin.jar.version>2.4</maven.plugin.jar.version> 
     <maven.plugin.war.version>2.3</maven.plugin.war.version> 
     <maven.plugin.resources.version>2.6</maven.plugin.resources.version> 
     <maven.plugin.compiler.version>3.1</maven.plugin.compiler.version> 
     <maven.plugin.surefire.version>2.14.1</maven.plugin.surefire.version> 
     <maven.plugin.dependency.version>2.4</maven.plugin.dependency.version> 
     <maven.plugin.scala.version>3.1.5</maven.plugin.scala.version> 

     <compiler.version.source>1.7</compiler.version.source> 
     <compiler.version.target>1.7</compiler.version.target> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.scala-lang</groupId> 
      <artifactId>scala-library</artifactId> 
      <version>2.10.2</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <finalName>${project.artifactId}</finalName> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-war-plugin</artifactId> 
        <version>${maven.plugin.war.version}</version> 
       </plugin> 
       <plugin> 
        <groupId>net.alchim31.maven</groupId> 
        <artifactId>scala-maven-plugin</artifactId> 
        <version>${maven.plugin.scala.version}</version> 
        <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> 
      </plugins> 
     </pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>net.alchim31.maven</groupId> 
       <artifactId>scala-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

После запуска МВН чистый пакет внутри этого каталога, с источником в ИПВ лестницу/основной/Скале и исходный файл Java в ИПВ/основной/Java это то, что я получаю. И, как вы можете видеть, файлы scala и java были скомпилированы в войну.

$ find . 
. 
./pom.xml 
./target 
./target/test 
./target/test/WEB-INF 
./target/test/WEB-INF/lib 
./target/test/WEB-INF/lib/scala-library-2.10.2.jar 
./target/test/WEB-INF/classes 
./target/test/WEB-INF/classes/ILoveJava.class 
./target/test/WEB-INF/classes/ILoveScala$.class 
./target/test/WEB-INF/classes/ILoveScala.class 
./target/test/WEB-INF/web.xml 
./target/test/META-INF 
./target/classes.-1172594870.timestamp 
./target/maven-archiver 
./target/maven-archiver/pom.properties 
./target/test.war 
./target/classes 
./target/classes/ILoveJava.class 
./target/classes/ILoveScala$.class 
./target/classes/ILoveScala.class 
./target/surefire 
./src 
./src/main 
./src/main/webapp 
./src/main/webapp/WEB-INF 
./src/main/webapp/WEB-INF/web.xml 
./src/main/java 
./src/main/java/ILoveJava.java 
./src/main/scala 
./src/main/scala/ilovescala.scala 
+0

Привет, спасибо за ответ, но это не работает для меня. Я пробовал такую ​​же конфигурацию scala-maven-plugin, как и у вас, но мои источники java не компилируются и не упаковываются в итоговую WAR. Не могли бы вы опубликовать конфигурацию своего плагина WAS? Я думаю, решение может быть там. –

+0

Хотя этот pom - это сокращение от «реального», которое я использую изо дня в день, я тестировал его перед публикацией, а список файлов - это фактический список файлов после запуска mvn clean package. Файл .war также содержит содержимое, как следует. – monkjack

+0

Я бы предложил вам создать такую ​​настройку, как я, создать 2 фиктивных файла, как я, - один источник scala, один источник java, а затем используйте мой pom. Затем работайте назад, чтобы узнать, что в вашей настройке нарушает его. – monkjack

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