com.github.christapley:windows-symbol-store-maven-plugin

A maven plugin to wrap general symstore.exe commands

License

License

Categories

Categories

Maven Build Tools
GroupId

GroupId

com.github.christapley
ArtifactId

ArtifactId

windows-symbol-store-maven-plugin
Last Version

Last Version

1.0.0
Release Date

Release Date

Type

Type

maven-plugin
Description

Description

com.github.christapley:windows-symbol-store-maven-plugin
A maven plugin to wrap general symstore.exe commands
Project URL

Project URL

https://github.com/christapley/windows-symbol-store-mojo
Source Code Management

Source Code Management

https://github.com/christapley/windows-symbol-store-mojo/tree/master

Download windows-symbol-store-maven-plugin

How to add to project

<plugin>
    <groupId>com.github.christapley</groupId>
    <artifactId>windows-symbol-store-maven-plugin</artifactId>
    <version>1.0.0</version>
</plugin>

Dependencies

compile (2)

Group / Artifact Type Version
org.apache.maven : maven-plugin-api jar 3.3.3
org.apache.commons : commons-io jar 1.3.2

provided (1)

Group / Artifact Type Version
org.apache.maven.plugin-tools : maven-plugin-annotations jar 3.4

test (6)

Group / Artifact Type Version
junit : junit jar 4.12
org.hamcrest : hamcrest-core jar 1.3
org.mockito : mockito-all jar 1.10.19
org.springframework : spring-test jar 4.2.4.RELEASE
org.powermock : powermock-module-junit4 jar 1.6.4
org.powermock : powermock-api-mockito jar 1.6.4

Project Modules

There are no modules declared in this project.

windows-symbol-store-mojo

Maven plugin to wrap Microsoft's symstore.exe commands

Build Status Coverage Status

symstore.exe information

Why might you need to set up a symbol server?

  • Has QA ever given you a collection of mini dumps from unknown builds and you've spent most of a day searching for matching symbols?
  • Do you produce a multitude of builds but don't know where to put pdb files?
  • Do you get crash/process dumps from clients or other intenal teams when something goes wrong?

If you answered yes to any other the above questions, you probably should setup a symbol server. Besides, these days all the cool kids store their symbols from their msvc builds on a Microsoft Symbol Server.

The server itself isn't anything special, a UNC path that your build machines can write to is enough.

Remember that symstore.exe does not support symultaneous transactions from many instances and so you will need to accomodate this in your build system

This plugin attempts to wrap the common symstore.exe commands in maven mojo's for people who like to use maven for this sort of stuff.

Obviously, this plugin will only work on Windows.

Examples

Add Files

Files are defined by filesets. It is best to keep the filesets simple so that it can easily translate into a windows wildcard. This limits the number of discrete transactions.

<plugin>
	<groupId>org.tapley</groupId>
	<artifactId>windows-symbol-store</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<configuration>
		<symStorePath>C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe</symStorePath>
		<repositoryPath>C:\temp\symbols</repositoryPath>
		<applicationName>test</applicationName>
		<fileSets>
			<fileSet>
				<directory>C:\Temp\binaries</directory>   
				<includes>
					<include>**/*.dll</include>
				</includes>
			</fileSet>
		</fileSets>
	</configuration>
	<executions>
		<execution>
			<id>mojo-AddSymbols</id>
			<phase>process-sources</phase>
			<goals>
				<goal>AddSymbols</goal>
			</goals>
		</execution>
	</executions>
</plugin>

Purge transactions after so many days

You might have multiple symbol stores, one for your released builds and one for your continuous integration builds. You may not want to keep your continuous integration symbols forever so this mojo will delete them after a configurable number of days.

<plugin>
	<groupId>org.tapley</groupId>
	<artifactId>windows-symbol-store</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<configuration>
		<symStorePath>C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe</symStorePath>
		<repositoryPath>C:\temp\symbols</repositoryPath>
		<days>60</days>
	</configuration>
	<executions>
		<execution>
			<id>mojo-test</id>
			<phase>process-classes</phase>
			<goals>
				<goal>PurgeAfterDays</goal>
			</goals>
		</execution>
	</executions>
</plugin>

Versions

Version
1.0.0