2012-12-20 10 views
15

Używam programu maven na Win 7 do tworzenia aplikacji. Używam plugin exec, aby wywołać skrypt Pythona.Wtyczka Maven exec - Wykonywanie skryptu python

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.2.1</version> 
     <executions> 
      <execution> 
       <id>create-dir</id> 
       <phase>process-classes</phase> 
       <goals> 
        <goal>exec</goal> 
       </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <executable>src/main/upgrade/create.py</executable> 
      <arguments> 
       <argument>ChangeSet.txt</argument> 
      </arguments> 
     </configuration> 
    </plugin> 

Otrzymuję poniższy błąd podczas budowania projektu.

Embedded error: Cannot run program "pathToScript/create.py" CreateProcess error=193, %1 is not a valid Win32 application 

Mam zainstalowany Python i dodano do zmiennej% PATH.

Jak mogę to naprawić, aby działał niezależnie od platformy OS?

.: - EDYCJA-.

KODEKS PRACY SNIPPET

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <executions> 
      <execution> 
       <configuration> 
        <executable>python</executable> 
        <workingDirectory>src/main/upgrade/</workingDirectory> 
        <arguments> 
         <argument>createChangeSet.py</argument> 
        </arguments>  

       </configuration> 
       <id>python-build</id> 
       <phase>prepare-package</phase> 
       <goals> 
        <goal>exec</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 
+1

pytanie brzmi dlaczego trzeba uruchomić skrypt Pythona? Musisz zdefiniować intruder Pythona w systemie Windows na Linuksie. Linia Shebang jest ważna. – khmarbaise

+0

Używam Twojego podejścia do uruchomienia czasochłonnego skryptu Pythona w fazie instalacji maven, skrypt Pythona działa, ale z logu konsoli chaosu, dane wyjściowe pochodzą z Pythona są w losowej złej kolejności. Czy masz ten sam problem? – yorkw

Odpowiedz

15

W Windows, skrypt nie jest wykonywalny. Plik wykonywalny to interpreter pythonów, a skrypt jest dla niego argumentem, więc wstaw <executable>path to your python interpreter</executable> i dodaj skrypt jako <argument>. Spodziewam się, że to samo powinno działać na każdej platformie, ale nie jestem ekspertem od Pythona.

+1

Dzięki Ryan. To się udało. Dodanie działającego skryptu do oryginalnego postu dla każdego, kto może go potrzebować. – SpikETidE

0

Po prostu chcieliśmy dodać, że przy nowszej wersji exec-maven-plugin, znacznik konfiguracji musi zostać umieszczony po tym, jak tag execouts zadziała.

jak w powyższym fragmencie pracy:

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <executions> 
      <execution> 
       <id>python-build</id> 
       <phase>prepare-package</phase> 
       <goals> 
        <goal>exec</goal> 
       </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <executable>python</executable> 
      <workingDirectory>src/main/upgrade/</workingDirectory> 
      <arguments> 
       <argument>createChangeSet.py</argument> 
      </arguments>  
     </configuration> 
    </plugin>