2012-06-21 11 views
7

Domyślnie wtyczka kompilatora maven umieszcza skompilowane klasy w ${project.build.directory}/classes. Chcę je umieścić w ${project.build.directory}/myclasses. Argument -d zmienia miejsce docelowe skompilowanych klas. Skonfigurowałem wtyczkę, ale mam błąd: javac: directory not found: C:\home\target/myclasses.maven-compiler-plugin jak zmienić katalog docelowy klas

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <source>1.5</source> 
     <target>1.5</target> 
     <showDeprecation>true</showDeprecation> 
     <compilerArguments> 
      <d>${project.build.directory}/myclasses</d> 
     </compilerArguments> 
    </configuration> 
</plugin> 
+1

Proste pytanie: dlaczego? – khmarbaise

+0

Byłem pewien, że ktoś by zapytał;) Muszę spakować kilka słoików w jednym wywołaniu maven używając różnych klas, więc muszę skompilować część źródła w jednym folderze, a drugą część w innym folderze. – Sydney

+1

@Sydney Maven celowo czyni takie potworności ciężko. Najlepszą odpowiedzią jest zmiana wymagań :-) –

Odpowiedz

6

Powinieneś być w stanie zrobić to tak:

<build> 
    <outputDirectory>${project.build.directory}/myclasses</outputDirectory> 
</build> 
3

Docelowy folder musi istnieje. Możesz go utworzyć za pomocą zadania Ant:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>createClassesDir</id> 
      <phase>process-resources</phase> 
      <configuration> 
       <tasks> 
        <mkdir dir="${project.build.directory}/myclasses" /> 
       </tasks> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
+2

To prawda, ale jeśli masz zamiar to zrobić, równie dobrze możesz uruchomić kompilator używając ant jak dobrze. –

+1

Pamiętaj, aby usunąć go, wykonując 'mvn clean' – Raghuram

+0

' mvn clean' domyślnie po prostu usuwa cały '$ {project.build.directory}'. –

Powiązane problemy