2010-04-13 6 views
23

J'ai un projet Maven avec du code JavaScript. Il y a un plugin de compilateur javascript spécial connecté à l'objectif de compilation dans le fichier pom.xml. Donc quand je tape "mvn compile" alors les sources JavaScript dans src/main/javascript sont compilées (compressées et obscurcies) et sauvegardées dans le répertoire target/classes. Sur la ligne de commande, cela fonctionne très bien. Mais maintenant je veux faciliter le développement en utilisant Eclipse avec le plugin m2eclipse. Je veux qu'Eclipse appelle l'objectif de compilation chaque fois que je change un fichier JavaScript. Comment puis-je faire ceci? Lorsque je sauvegarde un fichier JavaScript, je vois simplement une ligne de journalisation "AUTO_BUILD" dans la console maven et c'est tout.Comment démarrer le but "compiler" de Maven sur save dans Eclipse?

Dans les préférences du projet, il est possible de configurer un mappage de cycle de vie. Mais pour une raison quelconque, je peux seulement ajouter des objectifs personnalisés pour "après nettoyage" et "sur ressource modifiée". Lorsque j'ajoute l'objectif "compiler" au mappage de cycle de vie "modification de ressource", les fichiers JavaScript sont compilés lorsque je modifie une ressource. Donc, je pourrais mettre mes fichiers JavaScript dans le dossier des ressources à la place et cela fonctionnerait mais cela semble très laid.

Il fonctionne également lorsque je demande à Eclipse de "nettoyer" mon projet. Ensuite, la cible de compilation est appelée. Donc, la fonctionnalité est tout ce que je veux juste l'exécuter quand je sauvegarde un fichier JavaScript. Cela doit être possible d'une manière ou d'une autre?

Des indices?

Répondre

10

Dans les préférences de projet, il est possible de configurer un mappage de cycle de vie. Mais pour une raison quelconque, je peux seulement ajouter des objectifs personnalisés pour "après nettoyage" et "sur ressource modifiée". Lorsque j'ajoute l'objectif "compiler" au mappage de cycle de vie "modification de ressource", les fichiers JavaScript sont compilés lorsque je modifie une ressource. Donc, je pourrais mettre mes fichiers JavaScript dans le dossier des ressources à la place et cela fonctionnerait mais cela semble très laid.

Comme vous l'avez remarqué, les objectifs par défaut exécuter sur incrémentale dans Eclipse sont construit process-resources et resources:testResources. Personnellement, je ne trouve pas moche de mettre le fichier js sous les ressources et je voudrais simplement lier le plugin javascript sur process-resources.

Cela fonctionne également lorsque je demande à Eclipse de "nettoyer" mon projet. Ensuite, la cible de compilation est appelée.

En pleine construction (après un nettoyage de Eclipse), les objectifs d'exécution sont process-test-resources qui est en fait une phase du cycle de vie de construction qui comprend la phase compile, c'est pourquoi compile obtenir appelé lorsque vous nettoyez votre projet Eclipse. Mais cela ne résout pas votre problème (en exécutant votre plugin sur save).


Comme je l'ai dit, je voudrais simplement mettre le fichier js sous les ressources. Mais il y a peut-être une autre option: ajouter un autre Builder au projet. Faites un clic droit sur votre projet, puis Propriétés> Constructeurs> Nouveau> Maven Créer et définir votre objectif de plug-in comme objectif de courir pendant automatique Créer des objectifs (modifier ou supprimer les autres objectifs en fonction de vos besoins):

alt text http://img694.imageshack.us/img694/2382/screenshot003wo.png

Mais je préfère l'autre approche.

+17

Ce générateur n'est pas disponible dans l'assistant New-Builder (dans ma configuration particulière de Helios + m2eclipse). Comment as-tu fais ça? –

+1

Même. Pas de constructeur maven, même si j'ai installé m2e. –

+2

m2e doit avoir changé au cours des deux dernières années. –

1

depuis @ réponse pascals-Thivent est obsolète (comme mentionné dans les commentaires) et laissé entendre par @akostadinov https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html:

Vous devez ajouter une action du cycle de vie Maven valide

Exemple pour un pot qui est automatiquement déployé localement par maven install plugin:

<build> 
    <!-- ... --> 

    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 

          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-jar-plugin</artifactId> 
            <versionRange>[2.0,)</versionRange> 
            <goals> 
             <goal>jar</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <execute> 
             <runOnConfiguration>true</runOnConfiguration> 
             <runOnIncremental>true</runOnIncremental> 
            </execute> 
           </action> 
          </pluginExecution> 

          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-install-plugin</artifactId> 
            <versionRange>[2.5.0,)</versionRange> 
            <goals> 
             <goal>install</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <execute> 
             <runOnConfiguration>true</runOnConfiguration> 
             <runOnIncremental>true</runOnIncremental> 
            </execute> 
           </action> 
          </pluginExecution> 

         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

Conseil: se rapporte à Maven Project Builder is invoked every time I change a source file (GWT) et à titre d'avertissement: install inclut généralement des tests si vous les avez inclus dans votre cycle de construction maven normal

Questions connexes