2010-04-07 7 views
2

Désolé si le titre de la question prête à confusion. Laissez-moi vous expliquer plus loin.Comment modifier les paramètres du code en eclipse

Je construis un projet Java avec Eclipse. Dans mon produit Java, j'ai des conditions qui déterminent quel code est inclus dans le produit et repose sur des constantes finales statiques pour l'effeuillage.

class BuildFlags 
{ 
    public static final boolean SOME_FLAG = true; // Need to set this programmatically 
} 

class SomeOtherClass 
{ 
    public void someMethod() 
    { 
     if (BuildFlags.SOME_FLAG) 
     { 
      // flag specific code 
     } 
    } 
} 

Ma question est de savoir comment puis-je changer BuildFlags.SOME_FLAG (ci-dessus) pour que je puisse exécuter une version spéciale sans changer la source? Y a-t-il un moyen pour que je puisse passer des drapeaux au jvm (d'eclipse) auquel je peux alors accéder pour définir ce drapeau par programmation?

Répondre

3

Pour ce faire, définissez une valeur de propriété système (voir docs on java), puis obtenez-la à partir de System.getProperty(). Les propriétés système peuvent être définies dans Eclipse en modifiant la configuration d'exécution.

Notez que les propriétés sont définies en tant que chaînes - vous devrez le convertir en un booléen.

+0

Songer à prendre vos propriétés d'un fichier de propriété, au lieu de la ligne de commande. De cette façon, vous pouvez stocker des groupes de paramètres qui appartiennent ensemble. De plus, vous n'avez pas besoin de mémoriser les paramètres, car ils sont stockés dans un fichier. –

+0

Si la propriété 'dead code stripping' du drapeau final statique est une exigence, je ne pense pas que cela fonctionnera ... –

+0

@Kevin Vous ne pouvez pas avoir une optimisation du compilateur avec des conditions changeant dynamiquement, donc pas de solution work –

0
java -DsomeFlag=true <class> 

et

String flag = System.getProperty("someFlag"); 
Questions connexes