TODO Ramverket byggs med och för Java 17 och kräver att din utvecklingsmiljö har tillgång till detta.
För att utveckla tjänster tillhandahåller ramverket en föräldra-artefakt som bör användas enligt:
Code Block | ||
---|---|---|
| ||
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>se.sundsvall.dept44</groupId>
<artifactId>dept44-service-parent</artifactId>
<version>[dept44-version att använda]</version>
</parent>
<groupId>se.sundsvall</groupId>
<artifactId>ett-api</artifactId>
<version>0.1-SNAPSHOT</version>
...
</project> |
Ovanstående pom.xml
tillsammans med en applikationsklass annoterad med @ServiceApplication
och en main-metod, samt en application.properties
liknande nedan utgör i sig ett skal för en fungerande tjänst:
Code Block | ||
---|---|---|
| ||
@ServiceApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
} |
Code Block |
---|
openapi.name=my-api
openapi.title=My API
openapi.version=0.1 |
Artefakten fungerar som en Maven-POM och ser därmed till att rätt versioner av de beroenden som ramverket tillhandahåller används, samt att viss gemensam konfiguration utförs. Den ser även till att ramverkets bas-starter (dept44-starter
) alltid inkluderas i utvecklade tjänster. Utöver den är det fritt fram att inkludera starters efter behov.
Vidare aktiveras filtrering på resurser i katalogerna src/main/resources
och src/test/resources
så att man i resurserna kan använda platshållare på formatet @propertyNamn@
, såsom till exempel @project.version@
.
Föräldra-artefakten konfigurerar även ett antal Maven-plugins:
spring-boot-maven-plugin
- för att paketera applikationen/tjänstenmaven-resources-plugin
- för att hantera projekt-resursermaven-surefire-plugin
- för att exekvera enhetstestermaven-failsafe-plugin
- för att exekvera integrationstesterbuild-helper-maven-plugin
- för att sätta upp extra källkods- och resursrötter för integrationstester -src/integration-test/java
respektivesrc/integration-test/resources
jacoco-maven-plugin
- för att säkerställa kodtäckning.
Utan extra konfiguration kommerjacoco-maven-plugin
att applicera kodtäckningsregler för alla klasser, vilket kanske inte alltid är önskvärt. I det fallet kan man konfigurera undantag genom att lägga till följande i sinpom.xml
:Code Block language xml ... <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <configuration> <excludes> <exclude>**/my/package/FirstClassToExclude*</exclude> <exclude>**/my/package/ignored/**/*</exclude> </excludes> </configuration> </plugin> </plugins> ...
Som regel används 85% (0.85) för kodradstäckning och 50% (0.5) för branch-täckning. Detta kan om så önskas överstyras genom att i sin pom.xml
sätta properties coverage.line.level
respektive coverage.branch.level
till önskad täckningsgrad, t.ex 0.8 respektive 0.6.
Vill man generera JAR-filer innehållande källkod och JavaDoc-dokumentation för sin tjänst kan man i sin pom.xml
sätta maven.source.skip
respektive maven.javadoc.skip
till true
. Som standard är dessa inaktiverade, d.v.s. satta till false
.