2017-04-09 22 views
0

私は、JavaのHibernateのエンティティを含む私のプロジェクトで異なる成果物を生成する速度を使用しています。ここでApache Velocity 1.7を使用してテンプレートの空白(タブ)フォーマットを維持する方法は?

は私のテンプレートの例である:問題が生成されたコードは次のように見えることである

#foreach($column in $columns) 
    #if ($column.columnID != "id") 
     #if ($column.isColumnAnIdentifier) 
@Id 
     #end 
     #if ($column.isColumnValueGenerated) 
@GeneratedValue 
     #end 
     #if ($column.isColumnValueNotNull) 
@NotNull 
     #end 
     #if ($column.columnAllowedValues) 
@Enumerated(EnumType.STRING)   
     #end 
     #if ($column.isColumnValueUnique) 
@Column(unique=true) 
     #elseif ($column.isColumnJoinedManyToOne) 
@ManyToOne 
@JoinColumn(name = "$column.columnJoinByID") 
     #else 
@Column 
     #end 
private #if ($column.columnAllowedValues) $column.columnID.toUpperCase() #else $column.columnType #end $column.columnID; 
    #end 
#end 

@Column 
      private String vendor; 

                 @NotNull 
            @Column(unique=true) 
      private String name; 


@Column 
      private Integer min_quantity; 


@Column 
      private String description; 


@Column 
      private Boolean active; 

私は、各行の後に##を追加することで提案された解決策を試してみましたそれは助けにならない。 Velocityにテンプレートに定義された空白を残させる方法はありますか?行の末尾に

VelocityEngine velocityEngine = new VelocityEngine(); 
    velocityEngine.setProperty(RESOURCE_LOADER_PROPERTY, RESOURCE_LOADER_VALUE); 
    velocityEngine.setProperty(CLASSPATH_RESOURCE_LOADER_PROPERTY, ClasspathResourceLoader.class.getName()); 
    velocityEngine.init(); 
    Template velocityTemplate = velocityEngine.getTemplate(TEMPLATE_RESOURCES_ROOT_FOLDER + "/" + templateFileName);; 
    StringWriter writer = new StringWriter(); 
    velocityTemplate.merge(velocityContext, writer); 
    writeToFile(writer, destinationFilePath); 

答えて

0

##が十分ではありません、あなたはまた、ベロシティのインデントを削除する必要があります。インデントを保つために

代替、ベロシティのコメントをインデントすることです:

#foreach($column in $columns)## 
#**##if ($column.columnID != "id")## 
#* *##if ($column.isColumnAnIdentifier)## 
@Id 
#* *##end 
#* *##if ($column.isColumnValueGenerated)## 
... 

が、私はそれはかなり醜いです認めます。

次期速度2.0リリースでは、正確に何をしたいんで、デフォルトでアクティブspace gobbling optionを追加します。最新のリリース候補はhereです。

関連する問題