Grudge fits, but if it doesn't work it doesn't work.
To despise means "to strongly hate" but doesn't necessarily point to a time frame. Similarly, detest, abominate, abhor, and loathe, and others fun words like execrate, all indicate hatred but not how long you've been hating.
Bad blood is an idiom that indicates a long-standing animosity, although not necessarily hatred:
There had been bad blood between Bob and his enemy for many years
You can get metaphorical. For example a malignancy is a growing disease within a body, but figuratively it can refer to ill-will that has festered for some time, like a cancer:
There was a malignancy in Bob's heart, and it had a name: Fred Jones.
Related, a vendetta is a serious, long-term campaign of (or related to) vengeance.
Bob vowed to get his revenge on Fred no matter what it took. His vendetta would take him across continents and decades.
You can say something is an anathema, indicating both strong dislike and outrage.
The mere mention of the name of the elusive Fred became anathema to him.
Also related, a nemesis is someone's arch-enemy. It does indicate long-standing conflict, but not necessarily hatred:
Bob finally met his nemesis for the last time at the edge of Schroedinger Falls, where they vowed it would not end until one of them was (potentially) dead.
Let me know if I'm getting warm?