legend-sdlc
legend-sdlc copied to clipboard
Hardcoded dependency version for model pom.xml
Feature Request
Description of Problem:
When packaging legend model to gitlab, we generate a multi module maven project. The project is built using specific legend SDLC and legend engine dependencies where version is hardcoded in the legend SDLC code.
@see: https://github.com/finos/legend-sdlc/blob/master/legend-sdlc-server/src/main/java/org/finos/legend/sdlc/server/project/ProjectStructureV11Factory.java#L81
@see: https://github.com/finos/legend-sdlc/blob/master/legend-sdlc-server/src/main/java/org/finos/legend/sdlc/server/project/ProjectStructureV11Factory.java#L87
private static final String LEGEND_ENGINE_VERSION = "2.37.0";
As a consequence, model built on a specific version of the runtime would not benefit from the latest runtime features at compile time.
Potential Solutions:
Capture the version of dependencies used for SDLC server and inject those exact version to pom.xml generation. This could be done by creating an application.properties
file where versions are injected at compile time
legend-sdlc-server/src/main/resources/legend.properties
org.finos.legend.sdlc ${legend.sdlc.version}
org.finos.legend.engine ${legend.engine.version}
legend-sdlc-server/pom.xml
<resources>
<resource>
<directory>/</directory>
<includes>
<include>legend.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
legend-sdlc-server/src/main/java/org/finos/legend/sdlc/server/project/ProjectStructureV11Factory.java
protected static String getEngineVersion() throws IOException
{
Properties properties = new Properties();
properties.load(MavenProjectStructure.class.getResourceAsStream("/legend.properties"));
return properties.getProperty("org.finos.legend.engine");
}